From 810462eba3c45d4b34c79d10890d99f6ec6b1b26 Mon Sep 17 00:00:00 2001 From: Oleksandr Dzhychko Date: Mon, 29 Jun 2026 02:37:48 +0000 Subject: [PATCH] fix(settings): in absence form avoid shifting dates to browsers timezone Fixes #61584 Signed-off-by: Oleksandr Dzhychko --- apps/dav/src/components/AbsenceForm.spec.js | 75 +++++++++++++++++++ apps/dav/src/components/AbsenceForm.vue | 23 +++++- dist/dav-settings-personal-availability.js | 4 +- .../dav-settings-personal-availability.js.map | 2 +- 4 files changed, 99 insertions(+), 5 deletions(-) create mode 100644 apps/dav/src/components/AbsenceForm.spec.js diff --git a/apps/dav/src/components/AbsenceForm.spec.js b/apps/dav/src/components/AbsenceForm.spec.js new file mode 100644 index 0000000000000..e551982fcdb37 --- /dev/null +++ b/apps/dav/src/components/AbsenceForm.spec.js @@ -0,0 +1,75 @@ +/** + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { mount } from '@vue/test-utils' +import { afterEach, describe, expect, it, vi } from 'vitest' +import AbsenceForm from './AbsenceForm.vue' + +let davAbsence +vi.mock('@nextcloud/initial-state', () => ({ + loadState(app, key, fallback) { + if (app === 'dav' && key === 'absence' && davAbsence !== undefined) { + return davAbsence + } + if (fallback !== undefined) { + return fallback + } + + console.error('Unexpected loadState call without fallback', { app, key }) + throw new Error() + }, +})) + +afterEach(() => { + vi.unstubAllEnvs() + davAbsence = undefined + vi.resetModules() +}) + +function mountAbsenceForm() { + return mount(AbsenceForm, { + mocks: { + $t: (_app, text) => text, + }, + }) +} + +function getInputs(wrapper) { + const lables = wrapper.findAll('label') + + const firstDayLabel = lables.filter((l) => l.text() === 'First day').at(0) + const firstDayInput = wrapper.get(`#${firstDayLabel.attributes('for')}`) + + const lastDayLabel = lables.filter((l) => l.text() === 'Last day (inclusive)').at(0) + const lastDayInput = wrapper.get(`#${lastDayLabel.attributes('for')}`) + + return { firstDayInput, lastDayInput } +} + +describe('AbsenceForm', () => { + it('displays default state when browser timezone is set', async () => { + vi.setSystemTime(new Date(2026, 5, 29, 5, 0)) + vi.stubEnv('TZ', 'US/Pacific') + + const wrapper = mountAbsenceForm() + + const { firstDayInput } = getInputs(wrapper) + expect(firstDayInput.element.value).toBe('2026-06-29') + }) + + it('displays state when browser timezone is set', async () => { + vi.stubEnv('TZ', 'US/Pacific') + davAbsence = { + firstDay: '2026-06-29', + lastDay: '2026-06-30', + } + + const wrapper = mountAbsenceForm() + + const { firstDayInput, lastDayInput } = getInputs(wrapper) + expect(firstDayInput.element.value).toBe('2026-06-29') + expect(lastDayInput.element.value).toBe('2026-06-30') + }) +}) diff --git a/apps/dav/src/components/AbsenceForm.vue b/apps/dav/src/components/AbsenceForm.vue index 5350c04a56558..3a6957129226e 100644 --- a/apps/dav/src/components/AbsenceForm.vue +++ b/apps/dav/src/components/AbsenceForm.vue @@ -66,6 +66,22 @@ import NcTextArea from '@nextcloud/vue/components/NcTextArea' import NcSelect from '@nextcloud/vue/components/NcSelect' import NcDateTimePickerNative from '@nextcloud/vue/components/NcDateTimePickerNative' +/** + * Adjusts a date so `NcDateTimePickerNative` shows the same date + * instead of shifting it to the browsers timezone. + * + * @param {Date} date - e.g., new Date("1987-12-01") + * @return {Date} + */ +function inputAdjustDate(date) { + // e.g., date === Mon Nov 30 1987 16:00:00 GMT-0800 (Pacific Standard Time) + const timezoneOffsetMilliseconds = date.getTimezoneOffset() * 60 * 1000 + // e.g., Tue Dec 01 1987 00:00:00 GMT-0800 (Pacific Standard Time) + const adjustedDate = new Date(date.getTime() + timezoneOffsetMilliseconds) + // `NcDateTimePickerNative` will display this as 12/01/1987 + return adjustedDate +} + export default { name: 'AbsenceForm', components: { @@ -77,12 +93,15 @@ export default { }, data() { const { firstDay, lastDay, status, message, replacementUserId, replacementUserDisplayName } = loadState('dav', 'absence', {}) + const firstDayDate = firstDay ? new Date(firstDay) : new Date() + const firstDayInputAdjusted = inputAdjustDate(firstDayDate) + const lastDayInputAdjusted = lastDay ? inputAdjustDate(new Date(lastDay)) : null return { loading: false, status: status ?? '', message: message ?? '', - firstDay: firstDay ? new Date(firstDay) : new Date(), - lastDay: lastDay ? new Date(lastDay) : null, + firstDay: firstDayInputAdjusted, + lastDay: lastDayInputAdjusted, replacementUserId, replacementUser: replacementUserId ? { user: replacementUserId, displayName: replacementUserDisplayName } : null, searchLoading: false, diff --git a/dist/dav-settings-personal-availability.js b/dist/dav-settings-personal-availability.js index f8b6eee9b3276..0db2ea96d23d8 100644 --- a/dist/dav-settings-personal-availability.js +++ b/dist/dav-settings-personal-availability.js @@ -1,2 +1,2 @@ -(()=>{var t,e,n,r={95759(t,e,n){"use strict";var r=n(85471),a=n(53334),i=n(88837),s=n(21777),o=n(85168),l=n(81222),d=n(63814),c=n(40715);function u(t){return`${t.getFullYear()}-${(t.getMonth()+1).toString().padStart(2,"0")}-${t.getDate().toString().padStart(2,"0")}`}var h=n(44368),f=n(17334),m=n.n(f),p=n(35947);const A=(0,p.YK)().setApp("dav").detectUser().build();var y=n(74095),T=n(82182),g=n(177),S=n(67607),v=n(48198);const _={name:"AbsenceForm",components:{NcButton:y.A,NcTextField:T.A,NcTextArea:g.A,NcDateTimePickerNative:v.A,NcSelect:S.default},data(){const{firstDay:t,lastDay:e,status:n,message:r,replacementUserId:a,replacementUserDisplayName:i}=(0,l.C)("dav","absence",{});return{loading:!1,status:n??"",message:r??"",firstDay:t?new Date(t):new Date,lastDay:e?new Date(e):null,replacementUserId:a,replacementUser:a?{user:a,displayName:i}:null,searchLoading:!1,options:[]}},computed:{valid(){const t=new Date(this.firstDay?.getTime()),e=new Date(this.lastDay?.getTime());return t?.setHours(0,0,0,0),e?.setHours(0,0,0,0),!!this.firstDay&&!!this.lastDay&&!!this.status&&!!this.message&&e>=t}},methods:{resetForm(){this.status="",this.message="",this.firstDay=new Date,this.lastDay=null},formatForMultiselect:t=>({user:t.uuid||t.value.shareWith,displayName:t.name||t.label,subtitle:""|t.dsc}),async asyncFind(t){this.searchLoading=!0,await this.debounceGetSuggestions(t.trim())},async getSuggestions(t){const e=[c.I.User];let n=null;try{n=await h.Ay.get((0,d.KT)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"file",search:t,shareType:e}})}catch(t){return void console.error("Error fetching suggestions",t)}const r=n.data.ocs.data,a=n.data.ocs.data.exact;r.exact=[];const i=a.users,s=r.users;console.info("rawExactSuggestions",i),console.info("rawSuggestions",s);const o=i.map(t=>this.formatForMultiselect(t)),l=s.map(t=>this.formatForMultiselect(t)),u=o.concat(l),f=u.reduce((t,e)=>e.displayName?(t[e.displayName]||(t[e.displayName]=0),t[e.displayName]++,t):t,{});this.options=u.map(t=>f[t.displayName]>1&&!t.desc?{...t,desc:t.shareWithDisplayNameUnique}:t),this.searchLoading=!1,console.info("suggestions",this.options)},debounceGetSuggestions:m()(function(...t){this.getSuggestions(...t)},300),async saveForm(){if(this.valid){this.loading=!0;try{await h.Ay.post((0,d.KT)("/apps/dav/api/v1/outOfOffice/{userId}",{userId:(0,s.HW)().uid}),{firstDay:u(this.firstDay),lastDay:u(this.lastDay),status:this.status,message:this.message,replacementUserId:this.replacementUser?.user??null}),(0,o.Te)(this.$t("dav","Absence saved"))}catch(t){(0,o.Qg)(this.$t("dav","Failed to save your absence settings")),A.error("Could not save absence",{error:t})}finally{this.loading=!1}}},async clearAbsence(){this.loading=!0;try{await h.Ay.delete((0,d.KT)("/apps/dav/api/v1/outOfOffice/{userId}",{userId:(0,s.HW)().uid})),this.resetForm(),(0,o.Te)(this.$t("dav","Absence cleared"))}catch(t){(0,o.Qg)(this.$t("dav","Failed to clear your absence settings")),A.error("Could not clear absence",{error:t})}finally{this.loading=!1}}}};var E=n(85072),b=n.n(E),C=n(97825),D=n.n(C),x=n(77659),U=n.n(x),w=n(55056),O=n.n(w),Y=n(10540),B=n.n(Y),M=n(41113),I=n.n(M),k=n(75314),N={};N.styleTagTransform=I(),N.setAttributes=O(),N.insert=U().bind(null,"head"),N.domAPI=D(),N.insertStyleElement=B(),b()(k.A,N),k.A&&k.A.locals&&k.A.locals;var P=n(14486),j=(0,P.A)(_,function(){var t=this,e=t._self._c;return e("form",{staticClass:"absence",on:{submit:function(e){return e.preventDefault(),t.saveForm.apply(null,arguments)}}},[e("div",{staticClass:"absence__dates"},[e("NcDateTimePickerNative",{staticClass:"absence__dates__picker",attrs:{id:"absence-first-day",label:t.$t("dav","First day"),required:!0},model:{value:t.firstDay,callback:function(e){t.firstDay=e},expression:"firstDay"}}),t._v(" "),e("NcDateTimePickerNative",{staticClass:"absence__dates__picker",attrs:{id:"absence-last-day",label:t.$t("dav","Last day (inclusive)"),required:!0},model:{value:t.lastDay,callback:function(e){t.lastDay=e},expression:"lastDay"}})],1),t._v(" "),e("label",{attrs:{for:"replacement-search-input"}},[t._v(t._s(t.$t("dav","Out of office replacement (optional)")))]),t._v(" "),e("NcSelect",{ref:"select",attrs:{"input-id":"replacement-search-input",loading:t.searchLoading,placeholder:t.$t("dav","Name of the replacement"),"clear-search-on-blur":()=>!1,"user-select":!0,options:t.options},on:{search:t.asyncFind},scopedSlots:t._u([{key:"no-options",fn:function({search:e}){return[t._v("\n\t\t\t"+t._s(e?t.$t("dav","No results."):t.$t("dav","Start typing."))+"\n\t\t")]}}]),model:{value:t.replacementUser,callback:function(e){t.replacementUser=e},expression:"replacementUser"}}),t._v(" "),e("NcTextField",{attrs:{value:t.status,label:t.$t("dav","Short absence status"),required:!0},on:{"update:value":function(e){t.status=e}}}),t._v(" "),e("NcTextArea",{attrs:{value:t.message,label:t.$t("dav","Long absence Message"),required:!0},on:{"update:value":function(e){t.message=e}}}),t._v(" "),e("div",{staticClass:"absence__buttons"},[e("NcButton",{attrs:{disabled:t.loading||!t.valid,type:"primary","native-type":"submit"}},[t._v("\n\t\t\t"+t._s(t.$t("dav","Save"))+"\n\t\t")]),t._v(" "),e("NcButton",{attrs:{disabled:t.loading||!t.valid,type:"error"},on:{click:t.clearAbsence}},[t._v("\n\t\t\t"+t._s(t.$t("dav","Disable absence"))+"\n\t\t")])],1)],1)},[],!1,null,"7fe2e3cc",null);const z=j.exports;var L=n(12795),W={};W.styleTagTransform=I(),W.setAttributes=O(),W.insert=U().bind(null,"head"),W.domAPI=D(),W.insertStyleElement=B(),b()(L.A,W),L.A&&L.A.locals&&L.A.locals;var R=n(80218),F=n(15553),V=n(46447);class H{static fromString(t){return new H(t)}constructor(t){this.value=t}icaltype="binary";decodeValue(){return this._b64_decode(this.value)}setEncodedValue(t){this.value=this._b64_encode(t)}_b64_encode(t){let e,n,r,a,i,s,o,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c=0,u=0,h="",f=[];if(!t)return t;do{e=t.charCodeAt(c++),n=t.charCodeAt(c++),r=t.charCodeAt(c++),l=e<<16|n<<8|r,a=l>>18&63,i=l>>12&63,s=l>>6&63,o=63&l,f[u++]=d.charAt(a)+d.charAt(i)+d.charAt(s)+d.charAt(o)}while(c>16&255,n=l>>8&255,r=255&l,f[u++]=64==s?String.fromCharCode(e):64==o?String.fromCharCode(e,n):String.fromCharCode(e,n,r)}while(cn)-(e0?-1:0}toString(){return this.start+"/"+(this.end||this.duration)}toJSON(){return[this.start.toString(),(this.end||this.duration).toString()]}toICALString(){return this.start.toICALString()+"/"+(this.end||this.duration).toICALString()}}class J{static _dowCache={};static _wnCache={};static daysInMonth(t,e){let n=30;return t<1||t>12||(n=[0,31,28,31,30,31,30,31,31,30,31,30,31][t],2==t&&(n+=J.isLeapYear(e))),n}static isLeapYear(t){return t<=1752?t%4==0:t%4==0&&t%100!=0||t%400==0}static fromDayOfYear(t,e){let n=e,r=t,a=new J;a.auto_normalize=!1;let i=J.isLeapYear(n)?1:0;if(r<1)return n--,i=J.isLeapYear(n)?1:0,r+=J.daysInYearPassedMonth[i][12],J.fromDayOfYear(r,n);if(r>J.daysInYearPassedMonth[i][12])return i=J.isLeapYear(n)?1:0,r-=J.daysInYearPassedMonth[i][12],n++,J.fromDayOfYear(r,n);a.year=n,a.isDate=!0;for(let t=11;t>=0;t--)if(r>J.daysInYearPassedMonth[i][t]){a.month=t+1,a.day=r-J.daysInYearPassedMonth[i][t];break}return a.auto_normalize=!0,a}static fromStringv2(t){return new J({year:parseInt(t.slice(0,4),10),month:parseInt(t.slice(5,7),10),day:parseInt(t.slice(8,10),10),isDate:!0})}static fromDateString(t){return new J({year:lt(t.slice(0,4)),month:lt(t.slice(5,7)),day:lt(t.slice(8,10)),isDate:!0})}static fromDateTimeString(t,e){if(t.length<19)throw new Error('invalid date-time value: "'+t+'"');let n,r;"Z"===t.slice(-1)?n=at.utcTimezone:e&&(r=e.getParameter("tzid"),e.parent&&("standard"===e.parent.name||"daylight"===e.parent.name?n=at.localTimezone:r&&(n=e.parent.getTimeZoneByID(r))));const a={year:lt(t.slice(0,4)),month:lt(t.slice(5,7)),day:lt(t.slice(8,10)),hour:lt(t.slice(11,13)),minute:lt(t.slice(14,16)),second:lt(t.slice(17,19))};return r&&!n&&(a.timezone=r),new J(a,n)}static fromString(t,e){return t.length>10?J.fromDateTimeString(t,e):J.fromDateString(t)}static fromJSDate(t,e){return(new J).fromJSDate(t,e)}static fromData=function(t,e){return(new J).fromData(t,e)};static now(){return J.fromJSDate(new Date,!1)}static weekOneStarts(t,e){let n=J.fromData({year:t,month:1,day:1,isDate:!0}),r=n.dayOfWeek(),a=e||J.DEFAULT_WEEK_START;return r>J.THURSDAY&&(n.day+=7),a>J.THURSDAY&&(n.day-=7),n.day-=r-a,n}static getDominicalLetter(t){let e="GFEDCBA",n=(t+(t/4|0)+(t/400|0)-(t/100|0)-1)%7;return J.isLeapYear(t)?e[(n+6)%7]+e[n]:e[n]}static#t=null;static get epochTime(){return this.#t||(this.#t=J.fromData({year:1970,month:1,day:1,hour:0,minute:0,second:0,isDate:!1,timezone:"Z"})),this.#t}static _cmp_attr(t,e,n){return t[n]>e[n]?1:t[n]=0){s.day=1,0!=a&&a--,i=s.day;let e=t-s.dayOfWeek();e<0&&(e+=7),i+=e,i-=t,n=t}else s.day=r,a++,n=s.dayOfWeek()-t,n<0&&(n+=7),n=r-n;return n+=7*a,i+n}isNthWeekDay(t,e){let n=this.dayOfWeek();return 0===e&&n===t||this.nthWeekDay(t,e)===this.day}weekNumber(t){let e,n=(this.year<<12)+(this.month<<8)+(this.day<<3)+t;if(n in J._wnCache)return J._wnCache[n];let r=this.clone();r.isDate=!0;let a=this.year;12==r.month&&r.day>25?(e=J.weekOneStarts(a+1,t),r.compare(e)<0?e=J.weekOneStarts(a,t):a++):(e=J.weekOneStarts(a,t),r.compare(e)<0&&(e=J.weekOneStarts(--a,t)));let i=pt(r.subtractDate(e).toSeconds()/86400/7)+1;return J._wnCache[n]=i,i}addDuration(t){let e=t.isNegative?-1:1,n=this.second,r=this.minute,a=this.hour,i=this.day;n+=e*t.seconds,r+=e*t.minutes,a+=e*t.hours,i+=e*t.days,i+=7*e*t.weeks,this.second=n,this.minute=r,this.hour=a,this.day=i,this._cachedUnixTime=null}subtractDate(t){let e=this.toUnixTime()+this.utcOffset(),n=t.toUnixTime()+t.utcOffset();return q.fromSeconds(e-n)}subtractDateTz(t){let e=this.toUnixTime(),n=t.toUnixTime();return q.fromSeconds(e-n)}compare(t){if(t instanceof Z)return-1*t.compare(this);{let e=this.toUnixTime(),n=t.toUnixTime();return e>n?1:n>e?-1:0}}compareDateOnlyTz(t,e){let n=this.convertToZone(e),r=t.convertToZone(e),a=0;return 0!=(a=J._cmp_attr(n,r,"year"))||0!=(a=J._cmp_attr(n,r,"month"))||(a=J._cmp_attr(n,r,"day")),a}convertToZone(t){let e=this.clone(),n=this.zone.tzid==t.tzid;return this.isDate||n||at.convert_time(e,this.zone,t),e.zone=t,e}utcOffset(){return this.zone==at.localTimezone||this.zone==at.utcTimezone?0:this.zone.utcOffset(this)}toICALString(){let t=this.toString();return t.length>10?ne.icalendar.value["date-time"].toICAL(t):ne.icalendar.value.date.toICAL(t)}toString(){let t=this.year+"-"+mt(this.month)+"-"+mt(this.day);return this.isDate||(t+="T"+mt(this.hour)+":"+mt(this.minute)+":"+mt(this.second),this.zone===at.utcTimezone&&(t+="Z")),t}toJSDate(){return this.zone==at.localTimezone?this.isDate?new Date(this.year,this.month-1,this.day):new Date(this.year,this.month-1,this.day,this.hour,this.minute,this.second,0):new Date(1e3*this.toUnixTime())}_normalize(){return this._time.isDate&&(this._time.hour=0,this._time.minute=0,this._time.second=0),this.adjust(0,0,0,0),this}adjust(t,e,n,r,a){let i,s,o,l,d,c,u,h=0,f=0,m=a||this._time;if(m.isDate||(o=m.second+r,m.second=o%60,i=pt(o/60),m.second<0&&(m.second+=60,i--),l=m.minute+n+i,m.minute=l%60,s=pt(l/60),m.minute<0&&(m.minute+=60,s--),d=m.hour+e+s,m.hour=d%24,h=pt(d/24),m.hour<0&&(m.hour+=24,h--)),m.month>12?f=pt((m.month-1)/12):m.month<1&&(f=pt(m.month/12)-1),m.year+=f,m.month-=12*f,c=m.day+t+h,c>0)for(;u=J.daysInMonth(m.month,m.year),!(c<=u);)m.month++,m.month>12&&(m.year++,m.month=1),c-=u;else for(;c<=0;)1==m.month?(m.year--,m.month=12):m.month--,c+=J.daysInMonth(m.month,m.year);return m.day=c,this._cachedUnixTime=null,this}fromUnixTime(t){this.zone=at.utcTimezone;let e=new Date(1e3*t);this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this._time.isDate?(this.hour=0,this.minute=0,this.second=0):(this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()),this._cachedUnixTime=null}toUnixTime(){if(null!==this._cachedUnixTime)return this._cachedUnixTime;let t=this.utcOffset(),e=Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second-t);return this._cachedUnixTime=e/1e3,this._cachedUnixTime}toJSON(){let t,e=["year","month","day","hour","minute","second","isDate"],n=Object.create(null),r=0,a=e.length;for(;r1)throw new nt("invalid ical body. component began but did not end");return e=null,1==n.length?n[0]:n}et.property=function(t,e){let n={component:[[],[]],designSet:e||ne.defaultSet};return et._handleContentLine(t,n),n.component[1][0]},et.component=function(t){return et(t)};class nt extends Error{name=this.constructor.name}et.ParserError=nt,et._handleContentLine=function(t,e){let n,r,a,i,s,o,l=t.indexOf(X),d=t.indexOf(";"),c={};if(-1!==d&&-1!==l&&d>l&&(d=-1),-1!==d){if(a=t.slice(0,Math.max(0,d)).toLowerCase(),s=et._parseParameters(t.slice(Math.max(0,d)),0,e.designSet),-1==s[2])throw new nt("Invalid parameters in '"+t+"'");let o;if(c=s[0],o="string"==typeof s[1]?s[1].length:s[1].reduce((t,e)=>t+e.length,0),n=o+s[2]+d,-1===(r=t.slice(Math.max(0,n)).indexOf(X)))throw new nt("Missing parameter value in '"+t+"'");i=t.slice(Math.max(0,n+r+1))}else{if(-1===l)throw new nt('invalid line (no token ";" or ":") "'+t+'"');if(a=t.slice(0,Math.max(0,l)).toLowerCase(),i=t.slice(Math.max(0,l+1)),"begin"===a){let t=[i.toLowerCase(),[],[]];return 1===e.stack.length?e.component.push(t):e.component[2].push(t),e.stack.push(e.component),e.component=t,void(e.designSet||(e.designSet=ne.getDesignSet(e.component[0])))}if("end"===a)return void(e.component=e.stack.pop())}let u,h,f,m,p=!1,A=!1;e.designSet.propertyGroups&&-1!==a.indexOf(".")?(h=a.split("."),c.group=h[0],f=h[1]):f=a,f in e.designSet.property&&(u=e.designSet.property[f],"multiValue"in u&&(p=u.multiValue),"structuredValue"in u&&(A=u.structuredValue),i&&"detectType"in u&&(o=u.detectType(i))),o||(o="value"in c?c.value.toLowerCase():u?u.defaultType:"unknown"),delete c.value,p&&A?(i=et._parseMultiValue(i,A,o,[],p,e.designSet,A),m=[f,c,o,i]):p?(m=[f,c,o],et._parseMultiValue(i,p,o,m,null,e.designSet,!1)):A?(i=et._parseMultiValue(i,A,o,[],null,e.designSet,A),m=[f,c,o,i]):(i=et._parseValue(i,o,e.designSet,!1),m=[f,c,o,i]),"vcard"!==e.component[0]||0!==e.component[1].length||"version"===a&&"4.0"===i||(e.designSet=ne.getDesignSet("vcard3")),e.component[1].push(m)},et._parseValue=function(t,e,n,r){return e in n.value&&"fromICAL"in n.value[e]?n.value[e].fromICAL(t,r):t},et._parseParameters=function(t,e,n){let r,a,i,s,o,l,d=e,c=0,u={},h=-1;for(;!1!==c&&-1!==(c=t.indexOf("=",c+1));){if(r=t.slice(d+1,c),0==r.length)throw new nt("Empty parameter name in '"+t+"'");if(a=r.toLowerCase(),l=!1,o=!1,s=a in n.param&&n.param[a].valueType?n.param[a].valueType:"text",a in n.param&&(o=n.param[a].multiValue,n.param[a].multiValueSeparateDQuote&&(l=et._rfc6868Escape('"'+o+'"'))),'"'===t[c+1]){if(h=c+2,c=t.indexOf('"',h),o&&-1!=c){let e=!0;for(;e;)t[c+1]==o&&'"'==t[c+2]?c=t.indexOf('"',c+3):e=!1}if(-1===c)throw new nt('invalid line (no matching double quote) "'+t+'"');i=t.slice(h,c),d=t.indexOf(";",c);let e=t.indexOf(X,c);(-1===d||-1!==e&&d>e)&&(c=!1)}else{h=c+1;let e=t.indexOf(";",h),n=t.indexOf(X,h);-1!==n&&e>n?(e=n,c=!1):-1===e?(e=-1===n?t.length:n,c=!1):(d=e,c=e),i=t.slice(h,e)}const e=i.length;if(i=et._rfc6868Escape(i),h+=e-i.length,o){let t=l||o;i=et._parseMultiValue(i,t,s,[],null,n)}else i=et._parseValue(i,s,n);o&&a in u?Array.isArray(u[a])?u[a].push(i):u[a]=[u[a],i]:u[a]=i}return[u,i,h]},et._rfc6868Escape=function(t){return t.replace(/\^['n^]/g,function(t){return tt[t]})},et._parseMultiValue=function(t,e,n,r,a,i,s){let o,l=0,d=0;if(0===e.length)return t;for(;-1!==(l=ct(t,e,d));)o=t.slice(d,l),o=a?et._parseMultiValue(o,a,n,[],null,i,s):et._parseValue(o,n,i,s),r.push(o),d=l+e.length;return o=t.slice(d),o=a?et._parseMultiValue(o,a,n,[],null,i,s):et._parseValue(o,n,i,s),r.push(o),1==r.length?r[0]:r},et._eachLine=function(t,e){let n,r,a,i=t.length,s=t.search(Q),o=s;do{o=t.indexOf("\n",s)+1,a=o>1&&"\r"===t[o-2]?2:1,0===o&&(o=i,a=0),r=t[s]," "===r||"\t"===r?n+=t.slice(s+1,o-a):(n&&e(null,n),n=t.slice(s,o-a)),s=o}while(o!==i);n=n.trim(),n.length&&e(null,n)};const rt=["tzid","location","tznames","latitude","longitude"];class at{static _compare_change_fn(t,e){return t.yeare.year?1:t.monthe.month?1:t.daye.day?1:t.houre.hour?1:t.minutee.minute?1:t.seconde.second?1:0}static convert_time(t,e,n){if(t.isDate||e.tzid==n.tzid||e==at.localTimezone||n==at.localTimezone)return t.zone=n,t;let r=e.utcOffset(t);return t.adjust(0,0,0,-r),r=n.utcOffset(t),t.adjust(0,0,0,r),null}static fromData(t){return(new at).fromData(t)}static#e=null;static get utcTimezone(){return this.#e||(this.#e=at.fromData({tzid:"UTC"})),this.#e}static#n=null;static get localTimezone(){return this.#n||(this.#n=at.fromData({tzid:"floating"})),this.#n}static adjust_change(t,e,n,r,a){return J.prototype.adjust.call(t,e,n,r,a,t)}static _minimumExpansionYear=-1;static EXTRA_COVERAGE=5;constructor(t){this.wrappedJSObject=this,this.fromData(t)}tzid="";location="";tznames="";latitude=0;longitude=0;component=null;expandedUntilYear=0;icalclass="icaltimezone";fromData(t){if(this.expandedUntilYear=0,this.changes=[],t instanceof le)this.component=t;else{if(t&&"component"in t)if("string"==typeof t.component){let e=et(t.component);this.component=new le(e)}else t.component instanceof le?this.component=t.component:this.component=null;for(let e of rt)t&&e in t&&(this[e]=t[e])}return this.component instanceof le&&!this.tzid&&(this.tzid=this.component.getFirstPropertyValue("tzid")),this}utcOffset(t){if(this==at.utcTimezone||this==at.localTimezone)return 0;if(this._ensureCoverage(t.year),!this.changes.length)return 0;let e={year:t.year,month:t.month,day:t.day,hour:t.hour,minute:t.minute,second:t.second},n=this._findNearbyChange(e),r=-1,a=1;for(;;){let t=ht(this.changes[n],!0);if(t.utcOffset=0?r=n:a=-1,-1==a&&-1!=r)break;if(n+=a,n<0)return 0;if(n>=this.changes.length)break}let i=this.changes[r];if(i.utcOffset-i.prevUtcOffset<0&&r>0){let t=ht(i,!0);if(at.adjust_change(t,0,0,0,t.prevUtcOffset),at._compare_change_fn(e,t)<0){let t=this.changes[r-1],e=!1;i.is_daylight!=e&&t.is_daylight==e&&(i=t)}}return i.utcOffset}_findNearbyChange(t){let e=ut(this.changes,t,at._compare_change_fn);return e>=this.changes.length?this.changes.length-1:e}_ensureCoverage(t){if(-1==at._minimumExpansionYear){let t=J.now();at._minimumExpansionYear=t.year}let e=t;if(ee)&&t);)r.year=t.year,r.month=t.month,r.day=t.day,r.hour=t.hour,r.minute=t.minute,r.second=t.second,r.isDate=t.isDate,at.adjust_change(r,0,0,0,-r.prevUtcOffset),n.push(r)}}else r=s(),r.year=a.year,r.month=a.month,r.day=a.day,r.hour=a.hour,r.minute=a.minute,r.second=a.second,at.adjust_change(r,0,0,0,-r.prevUtcOffset),n.push(r);return n}toString(){return this.tznames?this.tznames:this.tzid}}let it=null;const st={get count(){return null===it?0:Object.keys(it).length},reset:function(){it=Object.create(null);let t=at.utcTimezone;it.Z=t,it.UTC=t,it.GMT=t},_hard_reset:function(){it=null},has:function(t){return null!==it&&!!it[t]},get:function(t){return null===it&&this.reset(),it[t]},register:function(t,e){if(null===it&&this.reset(),"string"==typeof t&&e instanceof at&&([t,e]=[e,t]),e||(t instanceof at?e=t.tzid:"vtimezone"===t.name&&(e=(t=new at(t)).tzid)),!e)throw new TypeError("Neither a timezone nor a name was passed");if(!(t instanceof at))throw new TypeError("timezone must be ICAL.Timezone or ICAL.Component");it[e]=t},remove:function(t){return null===it?null:delete it[t]}};function ot(t){return"number"==typeof t&&isNaN(t)}function lt(t){let e=parseInt(t,10);if(ot(e))throw new Error('Could not extract integer from "'+t+'"');return e}function dt(t,e){if(void 0!==t)return t instanceof e?t:new e(t)}function ct(t,e,n){for(;-1!==(n=t.indexOf(e,n));){if(!(n>0&&"\\"===t[n-1]))return n;n+=1}return-1}function ut(t,e,n){if(!t.length)return 0;let r,a,i=0,s=t.length-1;for(;i<=s;)if(r=i+Math.floor((s-i)/2),a=n(e,t[r]),a<0)s=r-1;else{if(!(a>0))break;i=r+1}return a<0?r:a>0?r+1:r}function ht(t,e){if(t&&"object"==typeof t){if(t instanceof Date)return new Date(t.getTime());if("clone"in t)return t.clone();if(Array.isArray(t)){let n=[];for(let r=0;r65535?2:1:(e+=he.newLineChar+" "+n.slice(0,Math.max(0,r)),n=n.slice(Math.max(0,r)),r=a=0)}return e.slice(he.newLineChar.length+1)}function mt(t){switch("string"!=typeof t&&("number"==typeof t&&(t=parseInt(t)),t=String(t)),t.length){case 0:return"00";case 1:return"0"+t;default:return t}}function pt(t){return t<0?Math.ceil(t):Math.floor(t)}function At(t,e){for(let n in t){let r=Object.getOwnPropertyDescriptor(t,n);r&&!Object.getOwnPropertyDescriptor(e,n)&&Object.defineProperty(e,n,r)}return e}var yt=Object.freeze({__proto__:null,binsearchInsert:ut,clone:ht,extend:At,foldline:ft,formatClassType:dt,isStrictlyNaN:ot,pad2:mt,strictParseInt:lt,trunc:pt,unescapedIndexOf:ct,updateTimezones:function(t){let e,n,r,a,i;if(!t||"vcalendar"!==t.name)return t;for(e=t.getAllSubcomponents(),n=[],r={},i=0;in)-(n>e)}_normalize(){let t=this.toSeconds(),e=this.factor;for(;t<-43200;)t+=97200;for(;t>50400;)t-=97200;this.fromSeconds(t),0==t&&(this.factor=e)}toICALString(){return ne.icalendar.value["utc-offset"].toICAL(this.toString())}toString(){return(1==this.factor?"+":"-")+mt(this.hours)+":"+mt(this.minutes)}}class gt extends J{static fromDateAndOrTimeString(t,e){function n(t,e,n){return t?lt(t.slice(e,e+n)):null}let r=t.split("T"),a=r[0],i=r[1],s=i?ne.vcard.value.time._splitZone(i):[],o=s[0],l=s[1],d=a?a.length:0,c=l?l.length:0,u=a&&"-"==a[0]&&"-"==a[1],h=l&&"-"==l[0],f={year:u?null:n(a,0,4),month:!u||4!=d&&7!=d?7==d||10==d?n(a,5,2):null:n(a,2,2),day:5==d?n(a,3,2):7==d&&u?n(a,5,2):10==d?n(a,8,2):null,hour:h?null:n(l,0,2),minute:h&&3==c?n(l,1,2):c>4?n(l,h?1:3,2):null,second:4==c?n(l,2,2):6==c?n(l,4,2):8==c?n(l,6,2):null};return o="Z"==o?at.utcTimezone:o&&":"==o[3]?Tt.fromString(o):null,new gt(f,o,e)}constructor(t,e,n){super(t,e),this.icaltype=n||"date-and-or-time"}icalclass="vcardtime";icaltype="date-and-or-time";clone(){return new gt(this._time,this.zone,this.icaltype)}_normalize(){return this}utcOffset(){return this.zone instanceof Tt?this.zone.toSeconds():J.prototype.utcOffset.apply(this,arguments)}toICALString(){return ne.vcard.value[this.icaltype].toICAL(this.toString())}toString(){let t,e=this.year,n=this.month,r=this.day,a=this.hour,i=this.minute,s=this.second,o=null!==n,l=null!==r,d=null!==a,c=null!==i,u=null!==s,h=(null!==e?mt(e)+(o||l?"-":""):o||l?"--":"")+(o?mt(n):"")+(l?"-"+mt(r):""),f=(d?mt(a):"-")+(d&&c?":":"")+(c?mt(i):"")+(d||c?"":"-")+(c&&u?":":"")+(u?mt(s):"");switch(t=this.zone===at.utcTimezone?"Z":this.zone instanceof Tt?this.zone.toString():this.zone===at.localTimezone?"":this.zone instanceof at?Tt.fromSeconds(this.zone.utcOffset(this)).toString():"",this.icaltype){case"time":return f+t;case"date-and-or-time":case"date-time":return h+("--"==f?"":"T"+f+t);case"date":return h}return null}}class St{static _indexMap={BYSECOND:0,BYMINUTE:1,BYHOUR:2,BYDAY:3,BYMONTHDAY:4,BYYEARDAY:5,BYWEEKNO:6,BYMONTH:7,BYSETPOS:8};static _expandMap={SECONDLY:[1,1,1,1,1,1,1,1],MINUTELY:[2,1,1,1,1,1,1,1],HOURLY:[2,2,1,1,1,1,1,1],DAILY:[2,2,2,1,1,1,1,1],WEEKLY:[2,2,2,2,3,3,1,1],MONTHLY:[2,2,2,2,2,3,3,1],YEARLY:[2,2,2,2,2,2,2,2]};static UNKNOWN=0;static CONTRACT=1;static EXPAND=2;static ILLEGAL=3;constructor(t){this.fromData(t)}completed=!1;rule=null;dtstart=null;last=null;occurrence_number=0;by_indices=null;initialized=!1;by_data=null;days=null;days_index=0;fromData(t){if(this.rule=dt(t.rule,xt),!this.rule)throw new Error("iterator requires a (ICAL.Recur) rule");if(this.dtstart=dt(t.dtstart,J),!this.dtstart)throw new Error("iterator requires a (ICAL.Time) dtstart");if(t.by_data?this.by_data=t.by_data:this.by_data=ht(this.rule.parts,!0),t.occurrence_number&&(this.occurrence_number=t.occurrence_number),this.days=t.days||[],t.last&&(this.last=dt(t.last,J)),this.by_indices=t.by_indices,this.by_indices||(this.by_indices={BYSECOND:0,BYMINUTE:0,BYHOUR:0,BYDAY:0,BYMONTH:0,BYWEEKNO:0,BYMONTHDAY:0}),this.initialized=t.initialized||!1,!this.initialized)try{this.init()}catch(t){if(!(t instanceof vt))throw t;this.completed=!0}}init(){this.initialized=!0,this.last=this.dtstart.clone();let t=this.by_data;if("BYDAY"in t&&this.sort_byday_rules(t.BYDAY),"BYYEARDAY"in t&&("BYMONTH"in t||"BYWEEKNO"in t||"BYMONTHDAY"in t))throw new Error("Invalid BYYEARDAY rule");if("BYWEEKNO"in t&&"BYMONTHDAY"in t)throw new Error("BYWEEKNO does not fit to BYMONTHDAY");if("MONTHLY"==this.rule.freq&&("BYYEARDAY"in t||"BYWEEKNO"in t))throw new Error("For MONTHLY recurrences neither BYYEARDAY nor BYWEEKNO may appear");if("WEEKLY"==this.rule.freq&&("BYYEARDAY"in t||"BYMONTHDAY"in t))throw new Error("For WEEKLY recurrences neither BYMONTHDAY nor BYYEARDAY may appear");if("YEARLY"!=this.rule.freq&&"BYYEARDAY"in t)throw new Error("BYYEARDAY may only appear in YEARLY rules");if(this.last.second=this.setup_defaults("BYSECOND","SECONDLY",this.dtstart.second),this.last.minute=this.setup_defaults("BYMINUTE","MINUTELY",this.dtstart.minute),this.last.hour=this.setup_defaults("BYHOUR","HOURLY",this.dtstart.hour),this.last.day=this.setup_defaults("BYMONTHDAY","DAILY",this.dtstart.day),this.last.month=this.setup_defaults("BYMONTH","MONTHLY",this.dtstart.month),"WEEKLY"==this.rule.freq)if("BYDAY"in t){let[,e]=this.ruleDayOfWeek(t.BYDAY[0],this.rule.wkst),n=e-this.last.dayOfWeek(this.rule.wkst);(this.last.dayOfWeek(this.rule.wkst)=0||n<0)&&(this.last.day+=n)}else{let e=xt.numericDayToIcalDay(this.dtstart.dayOfWeek());t.BYDAY=[e]}if("YEARLY"==this.rule.freq){const t=this.rule.until?this.rule.until.year:2e4;for(;this.last.year<=t&&(this.expand_year_days(this.last.year),!(this.days.length>0));)this.increment_year(this.rule.interval);if(0==this.days.length)throw new vt;if(!(this._nextByYearDay()||this.next_year()||this.next_year()||this.next_year()))throw new vt}if("MONTHLY"==this.rule.freq)if(this.has_by_data("BYDAY")){let t=null,e=this.last.clone(),n=J.daysInMonth(this.last.month,this.last.year);for(let r of this.by_data.BYDAY){this.last=e.clone();let[a,i]=this.ruleDayOfWeek(r),s=this.last.nthWeekDay(i,a);if(a>=6||a<=-6)throw new Error("Malformed values in BYDAY part");if(s>n||s<=0){if(t&&t.month==e.month)continue;for(;s>n||s<=0;)this.increment_month(),n=J.daysInMonth(this.last.month,this.last.year),s=this.last.nthWeekDay(i,a)}this.last.day=s,(!t||this.last.compare(t)<0)&&(t=this.last.clone())}if(this.last=t.clone(),this.has_by_data("BYMONTHDAY")&&this._byDayAndMonthDay(!0),this.last.day>n||0==this.last.day)throw new Error("Malformed values in BYDAY part")}else if(this.has_by_data("BYMONTHDAY")){this.last.day=1;let t=this.normalizeByMonthDayRules(this.last.year,this.last.month,this.rule.parts.BYMONTHDAY).filter(t=>t>=this.last.day);if(t.length)this.last.day=t[0],this.by_data.BYMONTHDAY=t;else if(!this.next_month()&&!this.next_month()&&!this.next_month())throw new vt}}next(t=!1){let e,n=this.last?this.last.clone():null;if((this.rule.count&&this.occurrence_number>=this.rule.count||this.rule.until&&this.last.compare(this.rule.until)>0)&&(this.completed=!0),this.completed)return null;if(0==this.occurrence_number&&this.last.compare(this.dtstart)>=0)return this.occurrence_number++,this.last;let r=0;do{switch(e=1,this.rule.freq){case"SECONDLY":this.next_second();break;case"MINUTELY":this.next_minute();break;case"HOURLY":this.next_hour();break;case"DAILY":this.next_day();break;case"WEEKLY":this.next_week();break;case"MONTHLY":if(e=this.next_month(),e)r=0;else if(336==++r)return this.completed=!0,null;break;case"YEARLY":if(e=this.next_year(),e)r=0;else if(28==++r)return this.completed=!0,null;break;default:return null}}while(!this.check_contracting_rules()||this.last.compare(this.dtstart)<0||!e);if(0==this.last.compare(n)){if(t)throw new Error("Same occurrence found twice, protecting you from death by recursion");this.next(!0)}return this.rule.until&&this.last.compare(this.rule.until)>0?(this.completed=!0,null):(this.occurrence_number++,this.last)}next_second(){return this.next_generic("BYSECOND","SECONDLY","second","minute")}increment_second(t){return this.increment_generic(t,"second",60,"minute")}next_minute(){return this.next_generic("BYMINUTE","MINUTELY","minute","hour","next_second")}increment_minute(t){return this.increment_generic(t,"minute",60,"hour")}next_hour(){return this.next_generic("BYHOUR","HOURLY","hour","monthday","next_minute")}increment_hour(t){this.increment_generic(t,"hour",24,"monthday")}next_day(){let t="DAILY"==this.rule.freq;return 0==this.next_hour()||(t?this.increment_monthday(this.rule.interval):this.increment_monthday(1)),0}next_week(){let t=0;if(0==this.next_weekday_by_week())return t;if(this.has_by_data("BYWEEKNO")){this.by_indices.BYWEEKNO++,this.by_indices.BYWEEKNO==this.by_data.BYWEEKNO.length&&(this.by_indices.BYWEEKNO=0,t=1),this.last.month=1,this.last.day=1;let e=this.by_data.BYWEEKNO[this.by_indices.BYWEEKNO];this.last.day+=7*e,t&&this.increment_year(1)}else this.increment_monthday(7*this.rule.interval);return t}normalizeByMonthDayRules(t,e,n){let r,a=J.daysInMonth(e,t),i=[],s=0,o=n.length;for(;sa)){if(r<0)r=a+(r+1);else if(0===r)continue;-1===i.indexOf(r)&&i.push(r)}}return i.sort(function(t,e){return t-e})}_byDayAndMonthDay(t){let e,n,r,a,i=this.by_data.BYDAY,s=0,o=i.length,l=0,d=this,c=this.last.day;function u(){for(a=J.daysInMonth(d.last.month,d.last.year),e=d.normalizeByMonthDayRules(d.last.year,d.last.month,d.by_data.BYMONTHDAY),r=e.length;e[s]<=c&&(!t||e[s]!=c)&&sa){h();continue}let t=e[s++];if(t>=n){c=t;for(let t=0;tn&&(this.last.day=1,this.increment_month(),this.is_day_in_byday(this.last)?this.has_by_data("BYSETPOS")&&!this.check_set_position(1)||(t=1):t=0)}else if(this.has_by_data("BYMONTHDAY")){if(this.by_indices.BYMONTHDAY++,this.by_indices.BYMONTHDAY>=this.by_data.BYMONTHDAY.length&&(this.by_indices.BYMONTHDAY=0,this.increment_month(),this.by_indices.BYMONTHDAY>=this.by_data.BYMONTHDAY.length))return 0;let e=J.daysInMonth(this.last.month,this.last.year),n=this.by_data.BYMONTHDAY[this.by_indices.BYMONTHDAY];n<0&&(n=e+n+1),n>e?(this.last.day=1,t=this.is_day_in_byday(this.last)):this.last.day=n}else{this.increment_month();let e=J.daysInMonth(this.last.month,this.last.year);this.by_data.BYMONTHDAY[0]>e?t=0:this.last.day=this.by_data.BYMONTHDAY[0]}return t}next_weekday_by_week(){let t=0;if(0==this.next_hour())return t;if(!this.has_by_data("BYDAY"))return 1;for(;;){let e=new J;this.by_indices.BYDAY++,this.by_indices.BYDAY==Object.keys(this.by_data.BYDAY).length&&(this.by_indices.BYDAY=0,t=1);let n=this.by_data.BYDAY[this.by_indices.BYDAY],r=this.ruleDayOfWeek(n)[1];r-=this.rule.wkst,r<0&&(r+=7),e.year=this.last.year,e.month=this.last.month,e.day=this.last.day;let a=e.startDoyWeek(this.rule.wkst);if(r+a<1&&!t)continue;let i=J.fromDayOfYear(a+r,this.last.year);return this.last.year=i.year,this.last.month=i.month,this.last.day=i.day,t}}next_year(){return 0==this.next_hour()?0:0!=this.days.length&&++this.days_index!=this.days.length||(this.days_index=0,this.increment_year(this.rule.interval),this.has_by_data("BYMONTHDAY")&&(this.by_data.BYMONTHDAY=this.normalizeByMonthDayRules(this.last.year,this.last.month,this.rule.parts.BYMONTHDAY)),this.expand_year_days(this.last.year),0!=this.days.length)?this._nextByYearDay():0}_nextByYearDay(){let t=this.days[this.days_index],e=this.last.year;if(366==Math.abs(t)&&!J.isLeapYear(this.last.year))return 0;t<1&&(t+=1,e+=1);let n=J.fromDayOfYear(t,e);return this.last.day=n.day,this.last.month=n.month,1}ruleDayOfWeek(t,e){let n=t.match(/([+-]?[0-9])?(MO|TU|WE|TH|FR|SA|SU)/);return n?[parseInt(n[1]||0,10),t=xt.icalDayToNumericDay(n[2],e)]:[0,0]}next_generic(t,e,n,r,a){let i=t in this.by_data,s=this.rule.freq==e,o=0;if(a&&0==this[a]())return o;if(i){this.by_indices[t]++;let e=this.by_data[t];this.by_indices[t]==e.length&&(this.by_indices[t]=0,o=1),this.last[n]=e[this.by_indices[t]]}else s&&this["increment_"+n](this.rule.interval);return i&&o&&s&&this["increment_"+r](1),o}increment_monthday(t){for(let e=0;et&&(this.last.day-=t,this.increment_month())}}increment_month(){if(this.last.day=1,this.has_by_data("BYMONTH"))this.by_indices.BYMONTH++,this.by_indices.BYMONTH==this.by_data.BYMONTH.length&&(this.by_indices.BYMONTH=0,this.increment_year(1)),this.last.month=this.by_data.BYMONTH[this.by_indices.BYMONTH];else{"MONTHLY"==this.rule.freq?this.last.month+=this.rule.interval:this.last.month++,this.last.month--;let t=pt(this.last.month/12);this.last.month%=12,this.last.month++,0!=t&&this.increment_year(t)}this.has_by_data("BYMONTHDAY")&&(this.by_data.BYMONTHDAY=this.normalizeByMonthDayRules(this.last.year,this.last.month,this.rule.parts.BYMONTHDAY))}increment_year(t){this.last.day=1,this.last.year+=t}increment_generic(t,e,n,r){this.last[e]+=t;let a=pt(this.last[e]/n);this.last[e]%=n,0!=a&&this["increment_"+r](a)}has_by_data(t){return t in this.rule.parts}expand_year_days(t){let e=new J;this.days=[];let n={},r=["BYDAY","BYWEEKNO","BYMONTHDAY","BYMONTH","BYYEARDAY"];for(let t of r)t in this.rule.parts&&(n[t]=this.rule.parts[t]);if("BYMONTH"in n&&"BYWEEKNO"in n){let r=1,a={};e.year=t,e.isDate=!0;for(let n=0;n0?(e=d+7*(o-1),e<=r&&this.days.push(i+e)):(e=c+7*(o+1),e>0&&this.days.push(i+e))}}this.days.sort(function(t,e){return t-e})}else if(2==a&&"BYDAY"in n&&"BYMONTHDAY"in n){let e=this.expand_by_day(t);for(let n of e){let e=J.fromDayOfYear(n,t);this.by_data.BYMONTHDAY.indexOf(e.day)>=0&&this.days.push(n)}}else if(3==a&&"BYDAY"in n&&"BYMONTHDAY"in n&&"BYMONTH"in n){let e=this.expand_by_day(t);for(let n of e){let e=J.fromDayOfYear(n,t);this.by_data.BYMONTH.indexOf(e.month)>=0&&this.by_data.BYMONTHDAY.indexOf(e.day)>=0&&this.days.push(n)}}else if(2==a&&"BYDAY"in n&&"BYWEEKNO"in n){let e=this.expand_by_day(t);for(let n of e){let e=J.fromDayOfYear(n,t).weekNumber(this.rule.wkst);this.by_data.BYWEEKNO.indexOf(e)&&this.days.push(n)}}else if(3==a&&"BYDAY"in n&&"BYWEEKNO"in n&&"BYMONTHDAY"in n);else if(1==a&&"BYYEARDAY"in n)this.days=this.days.concat(this.by_data.BYYEARDAY);else if(2==a&&"BYYEARDAY"in n&&"BYDAY"in n){let e=J.isLeapYear(t)?366:365,n=new Set(this.expand_by_day(t));for(let t of this.by_data.BYYEARDAY)t<0&&(t+=e+1),n.has(t)&&this.days.push(t)}else this.days=[];let i=J.isLeapYear(t)?366:365;return this.days.sort((t,e)=>(t<0&&(t+=i+1),e<0&&(e+=i+1),t-e)),0}expand_by_day(t){let e=[],n=this.last.clone();n.year=t,n.month=1,n.day=1,n.isDate=!0;let r=n.dayOfWeek();n.month=12,n.day=31,n.isDate=!0;let a=n.dayOfWeek(),i=n.dayOfYear();for(let t of this.by_data.BYDAY){let n=this.ruleDayOfWeek(t),s=n[0],o=n[1];if(0==s)for(let t=(o+7-r)%7+1;t<=i;t+=7)e.push(t);else if(s>0){let t;t=o>=r?o-r+1:o-r+8,e.push(t+7*(s-1))}else{let t;s=-s,t=o<=a?i-a+o:i-a+o-7,e.push(t-7*(s-1))}}return e}is_day_in_byday(t){if(this.by_data.BYDAY)for(let e of this.by_data.BYDAY){let n=this.ruleDayOfWeek(e),r=n[0],a=n[1],i=t.dayOfWeek();if(0==r&&a==i||t.nthWeekDay(a,r)==t.day)return 1}return 0}check_set_position(t){return!!this.has_by_data("BYSETPOS")&&-1!==this.by_data.BYSETPOS.indexOf(t)}sort_byday_rules(t){for(let e=0;ethis.ruleDayOfWeek(t[e],this.rule.wkst)[1]){let r=t[e];t[e]=t[n],t[n]=r}}check_contract_restriction(t,e){let n=St._indexMap[t],r=St._expandMap[this.rule.freq][n],a=!1;if(t in this.by_data&&r==St.CONTRACT){let n=this.by_data[t];for(let t of n)if(t==e){a=!0;break}}else a=!0;return a}check_contracting_rules(){let t=this.last.dayOfWeek(),e=this.last.weekNumber(this.rule.wkst),n=this.last.dayOfYear();return this.check_contract_restriction("BYSECOND",this.last.second)&&this.check_contract_restriction("BYMINUTE",this.last.minute)&&this.check_contract_restriction("BYHOUR",this.last.hour)&&this.check_contract_restriction("BYDAY",xt.numericDayToIcalDay(t))&&this.check_contract_restriction("BYWEEKNO",e)&&this.check_contract_restriction("BYMONTHDAY",this.last.day)&&this.check_contract_restriction("BYMONTH",this.last.month)&&this.check_contract_restriction("BYYEARDAY",n)}setup_defaults(t,e,n){let r=St._indexMap[t];return St._expandMap[this.rule.freq][r]!=St.CONTRACT&&(t in this.by_data||(this.by_data[t]=[n]),this.rule.freq!=e)?this.by_data[t][0]:n}toJSON(){let t=Object.create(null);return t.initialized=this.initialized,t.rule=this.rule.toJSON(),t.dtstart=this.dtstart.toJSON(),t.by_data=this.by_data,t.days=this.days,t.last=this.last.toJSON(),t.by_indices=this.by_indices,t.occurrence_number=this.occurrence_number,t}}class vt extends Error{constructor(){super("Recurrence rule has no valid occurrences")}}const _t=/^(SU|MO|TU|WE|TH|FR|SA)$/,Et=/^([+-])?(5[0-3]|[1-4][0-9]|[1-9])?(SU|MO|TU|WE|TH|FR|SA)$/,bt={SU:J.SUNDAY,MO:J.MONDAY,TU:J.TUESDAY,WE:J.WEDNESDAY,TH:J.THURSDAY,FR:J.FRIDAY,SA:J.SATURDAY},Ct=Object.fromEntries(Object.entries(bt).map(t=>t.reverse())),Dt=["SECONDLY","MINUTELY","HOURLY","DAILY","WEEKLY","MONTHLY","YEARLY"];class xt{static fromString(t){let e=this._stringToData(t,!1);return new xt(e)}static fromData(t){return new xt(t)}static _stringToData(t,e){let n=Object.create(null),r=t.split(";"),a=r.length;for(let t=0;t7&&(n-=7),Ct[n]}constructor(t){this.wrappedJSObject=this,this.parts={},t&&"object"==typeof t&&this.fromData(t)}parts=null;interval=1;wkst=J.MONDAY;until=null;count=null;freq=null;icalclass="icalrecur";icaltype="recur";iterator(t){return new St({rule:this,dtstart:t})}clone(){return new xt(this.toJSON())}isFinite(){return!(!this.count&&!this.until)}isByCount(){return!(!this.count||this.until)}addComponent(t,e){let n=t.toUpperCase();n in this.parts?this.parts[n].push(e):this.parts[n]=[e]}setComponent(t,e){this.parts[t.toUpperCase()]=e.slice()}getComponent(t){let e=t.toUpperCase();return e in this.parts?this.parts[e].slice():[]}getNextOccurrence(t,e){let n,r=this.iterator(t);do{n=r.next()}while(n&&n.compare(e)<=0);return n&&e.zone&&(n.zone=e.zone),n}fromData(t){for(let e in t){let n=e.toUpperCase();n in Ot?Array.isArray(t[e])?this.parts[n]=t[e]:this.parts[n]=[t[e]]:this[e]=t[e]}this.interval&&"number"!=typeof this.interval&&wt.INTERVAL(this.interval,this),this.wkst&&"number"!=typeof this.wkst&&(this.wkst=xt.icalDayToNumericDay(this.wkst)),!this.until||this.until instanceof J||(this.until=J.fromString(this.until))}toJSON(){let t=Object.create(null);t.freq=this.freq,this.count&&(t.count=this.count),this.interval>1&&(t.interval=this.interval);for(let[e,n]of Object.entries(this.parts))Array.isArray(n)&&1==n.length?t[e.toLowerCase()]=n[0]:t[e.toLowerCase()]=ht(n);return this.until&&(t.until=this.until.toString()),"wkst"in this&&this.wkst!==J.DEFAULT_WEEK_START&&(t.wkst=xt.numericDayToIcalDay(this.wkst)),t}toString(){let t="FREQ="+this.freq;this.count&&(t+=";COUNT="+this.count),this.interval>1&&(t+=";INTERVAL="+this.interval);for(let[e,n]of Object.entries(this.parts))t+=";"+e+"="+n;return this.until&&(t+=";UNTIL="+this.until.toICALString()),"wkst"in this&&this.wkst!==J.DEFAULT_WEEK_START&&(t+=";WKST="+xt.numericDayToIcalDay(this.wkst)),t}}function Ut(t,e,n,r){let a=r;if("+"===r[0]&&(a=r.slice(1)),a=lt(a),void 0!==e&&r '+e);if(void 0!==n&&r>n)throw new Error(t+': invalid value "'+r+'" must be < '+e);return a}const wt={FREQ:function(t,e,n){if(-1===Dt.indexOf(t))throw new Error('invalid frequency "'+t+'" expected: "'+Dt.join(", ")+'"');e.freq=t},COUNT:function(t,e,n){e.count=lt(t)},INTERVAL:function(t,e,n){e.interval=lt(t),e.interval<1&&(e.interval=1)},UNTIL:function(t,e,n){t.length>10?e.until=ne.icalendar.value["date-time"].fromICAL(t):e.until=ne.icalendar.value.date.fromICAL(t),n||(e.until=J.fromString(e.until))},WKST:function(t,e,n){if(!_t.test(t))throw new Error('invalid WKST value "'+t+'"');e.wkst=xt.icalDayToNumericDay(t)}},Ot={BYSECOND:Ut.bind(void 0,"BYSECOND",0,60),BYMINUTE:Ut.bind(void 0,"BYMINUTE",0,59),BYHOUR:Ut.bind(void 0,"BYHOUR",0,23),BYDAY:function(t){if(Et.test(t))return t;throw new Error('invalid BYDAY value "'+t+'"')},BYMONTHDAY:Ut.bind(void 0,"BYMONTHDAY",-31,31),BYYEARDAY:Ut.bind(void 0,"BYYEARDAY",-366,366),BYWEEKNO:Ut.bind(void 0,"BYWEEKNO",-53,53),BYMONTH:Ut.bind(void 0,"BYMONTH",1,12),BYSETPOS:Ut.bind(void 0,"BYSETPOS",-366,366)},Yt=/\\\\|\\,|\\[Nn]/g,Bt=/\\|,|\n/g;function Mt(t,e){return{matches:/.*/,fromICAL:function(e,n){return function(t,e,n){return-1===t.indexOf("\\")?t:(n&&(e=new RegExp(e.source+"|\\\\"+n,e.flags)),t.replace(e,Vt))}(e,t,n)},toICAL:function(t,n){let r=e;return n&&(r=new RegExp(r.source+"|"+n,r.flags)),t.replace(r,function(t){switch(t){case"\\":return"\\\\";case";":return"\\;";case",":return"\\,";case"\n":return"\\n";default:return t}})}}}const It={defaultType:"text"},kt={defaultType:"text",multiValue:","},Nt={defaultType:"text",structuredValue:";"},Pt={defaultType:"integer"},jt={defaultType:"date-time",allowedTypes:["date-time","date"]},zt={defaultType:"date-time"},Lt={defaultType:"uri"},Wt={defaultType:"utc-offset"},Rt={defaultType:"recur"},Ft={defaultType:"date-and-or-time",allowedTypes:["date-time","date","text"]};function Vt(t){switch(t){case"\\\\":return"\\";case"\\;":return";";case"\\,":return",";case"\\n":case"\\N":return"\n";default:return t}}let Ht={categories:kt,url:Lt,version:It,uid:It},Kt={boolean:{values:["TRUE","FALSE"],fromICAL:function(t){return"TRUE"===t},toICAL:function(t){return t?"TRUE":"FALSE"}},float:{matches:/^[+-]?\d+\.\d+$/,fromICAL:function(t){let e=parseFloat(t);return ot(e)?0:e},toICAL:function(t){return String(t)}},integer:{fromICAL:function(t){let e=parseInt(t);return ot(e)?0:e},toICAL:function(t){return String(t)}},"utc-offset":{toICAL:function(t){return t.length<7?t.slice(0,3)+t.slice(4,6):t.slice(0,3)+t.slice(4,6)+t.slice(7,9)},fromICAL:function(t){return t.length<6?t.slice(0,3)+":"+t.slice(3,5):t.slice(0,3)+":"+t.slice(3,5)+":"+t.slice(5,7)},decorate:function(t){return Tt.fromString(t)},undecorate:function(t){return t.toString()}}};const Gt=At(Kt,{text:Mt(/\\\\|\\;|\\,|\\[Nn]/g,/\\|;|,|\n/g),uri:{},binary:{decorate:function(t){return H.fromString(t)},undecorate:function(t){return t.toString()}},"cal-address":{},date:{decorate:function(t,e){return ne.strict?J.fromDateString(t,e):J.fromString(t,e)},undecorate:function(t){return t.toString()},fromICAL:function(t){return!ne.strict&&t.length>=15?Gt["date-time"].fromICAL(t):t.slice(0,4)+"-"+t.slice(4,6)+"-"+t.slice(6,8)},toICAL:function(t){let e=t.length;return 10==e?t.slice(0,4)+t.slice(5,7)+t.slice(8,10):e>=19?Gt["date-time"].toICAL(t):t}},"date-time":{fromICAL:function(t){if(ne.strict||8!=t.length){let e=t.slice(0,4)+"-"+t.slice(4,6)+"-"+t.slice(6,8)+"T"+t.slice(9,11)+":"+t.slice(11,13)+":"+t.slice(13,15);return t[15]&&"Z"===t[15]&&(e+="Z"),e}return Gt.date.fromICAL(t)},toICAL:function(t){let e=t.length;if(10!=e||ne.strict){if(e>=19){let e=t.slice(0,4)+t.slice(5,7)+t.slice(8,13)+t.slice(14,16)+t.slice(17,19);return t[19]&&"Z"===t[19]&&(e+="Z"),e}return t}return Gt.date.toICAL(t)},decorate:function(t,e){return ne.strict?J.fromDateTimeString(t,e):J.fromString(t,e)},undecorate:function(t){return t.toString()}},duration:{decorate:function(t){return q.fromString(t)},undecorate:function(t){return t.toString()}},period:{fromICAL:function(t){let e=t.split("/");return e[0]=Gt["date-time"].fromICAL(e[0]),q.isValueString(e[1])||(e[1]=Gt["date-time"].fromICAL(e[1])),e},toICAL:function(t){return t=t.slice(),ne.strict||10!=t[0].length?t[0]=Gt["date-time"].toICAL(t[0]):t[0]=Gt.date.toICAL(t[0]),q.isValueString(t[1])||(ne.strict||10!=t[1].length?t[1]=Gt["date-time"].toICAL(t[1]):t[1]=Gt.date.toICAL(t[1])),t.join("/")},decorate:function(t,e){return Z.fromJSON(t,e,!ne.strict)},undecorate:function(t){return t.toJSON()}},recur:{fromICAL:function(t){return xt._stringToData(t,!0)},toICAL:function(t){let e="";for(let[n,r]of Object.entries(t))"until"==n?r=r.length>10?Gt["date-time"].toICAL(r):Gt.date.toICAL(r):"wkst"==n?"number"==typeof r&&(r=xt.numericDayToIcalDay(r)):Array.isArray(r)&&(r=r.join(",")),e+=n.toUpperCase()+"="+r+";";return e.slice(0,Math.max(0,e.length-1))},decorate:function(t){return xt.fromData(t)},undecorate:function(t){return t.toJSON()}},time:{fromICAL:function(t){if(t.length<6)return t;let e=t.slice(0,2)+":"+t.slice(2,4)+":"+t.slice(4,6);return"Z"===t[6]&&(e+="Z"),e},toICAL:function(t){if(t.length<8)return t;let e=t.slice(0,2)+t.slice(3,5)+t.slice(6,8);return"Z"===t[8]&&(e+="Z"),e}}});let qt=At(Ht,{action:It,attach:{defaultType:"uri"},attendee:{defaultType:"cal-address"},calscale:It,class:It,comment:It,completed:zt,contact:It,created:zt,description:It,dtend:jt,dtstamp:zt,dtstart:jt,due:jt,duration:{defaultType:"duration"},exdate:{defaultType:"date-time",allowedTypes:["date-time","date"],multiValue:","},exrule:Rt,freebusy:{defaultType:"period",multiValue:","},geo:{defaultType:"float",structuredValue:";"},"last-modified":zt,location:It,method:It,organizer:{defaultType:"cal-address"},"percent-complete":Pt,priority:Pt,prodid:It,"related-to":It,repeat:Pt,rdate:{defaultType:"date-time",allowedTypes:["date-time","date","period"],multiValue:",",detectType:function(t){return-1!==t.indexOf("/")?"period":-1===t.indexOf("T")?"date":"date-time"}},"recurrence-id":jt,resources:kt,"request-status":Nt,rrule:Rt,sequence:Pt,status:It,summary:It,transp:It,trigger:{defaultType:"duration",allowedTypes:["duration","date-time"]},tzoffsetfrom:Wt,tzoffsetto:Wt,tzurl:Lt,tzid:It,tzname:It});const $t=At(Kt,{text:Mt(Yt,Bt),uri:Mt(Yt,Bt),date:{decorate:function(t){return gt.fromDateAndOrTimeString(t,"date")},undecorate:function(t){return t.toString()},fromICAL:function(t){return 8==t.length?Gt.date.fromICAL(t):"-"==t[0]&&6==t.length?t.slice(0,4)+"-"+t.slice(4):t},toICAL:function(t){return 10==t.length?Gt.date.toICAL(t):"-"==t[0]&&7==t.length?t.slice(0,4)+t.slice(5):t}},time:{decorate:function(t){return gt.fromDateAndOrTimeString("T"+t,"time")},undecorate:function(t){return t.toString()},fromICAL:function(t){let e=$t.time._splitZone(t,!0),n=e[0],r=e[1];return 6==r.length?r=r.slice(0,2)+":"+r.slice(2,4)+":"+r.slice(4,6):4==r.length&&"-"!=r[0]?r=r.slice(0,2)+":"+r.slice(2,4):5==r.length&&(r=r.slice(0,3)+":"+r.slice(3,5)),5!=n.length||"-"!=n[0]&&"+"!=n[0]||(n=n.slice(0,3)+":"+n.slice(3)),r+n},toICAL:function(t){let e=$t.time._splitZone(t),n=e[0],r=e[1];return 8==r.length?r=r.slice(0,2)+r.slice(3,5)+r.slice(6,8):5==r.length&&"-"!=r[0]?r=r.slice(0,2)+r.slice(3,5):6==r.length&&(r=r.slice(0,3)+r.slice(4,6)),6!=n.length||"-"!=n[0]&&"+"!=n[0]||(n=n.slice(0,3)+n.slice(4)),r+n},_splitZone:function(t,e){let n,r,a=t.length-1,i=t.length-(e?5:6),s=t[i];return"Z"==t[a]?(n=t[a],r=t.slice(0,Math.max(0,a))):t.length>6&&("-"==s||"+"==s)?(n=t.slice(i),r=t.slice(0,Math.max(0,i))):(n="",r=t),[n,r]}},"date-time":{decorate:function(t){return gt.fromDateAndOrTimeString(t,"date-time")},undecorate:function(t){return t.toString()},fromICAL:function(t){return $t["date-and-or-time"].fromICAL(t)},toICAL:function(t){return $t["date-and-or-time"].toICAL(t)}},"date-and-or-time":{decorate:function(t){return gt.fromDateAndOrTimeString(t,"date-and-or-time")},undecorate:function(t){return t.toString()},fromICAL:function(t){let e=t.split("T");return(e[0]?$t.date.fromICAL(e[0]):"")+(e[1]?"T"+$t.time.fromICAL(e[1]):"")},toICAL:function(t){let e=t.split("T");return $t.date.toICAL(e[0])+(e[1]?"T"+$t.time.toICAL(e[1]):"")}},timestamp:Gt["date-time"],"language-tag":{matches:/^[a-zA-Z0-9-]+$/},"phone-number":{fromICAL:function(t){return Array.from(t).filter(function(t){return"\\"===t?void 0:t}).join("")},toICAL:function(t){return Array.from(t).map(function(t){return","===t||";"===t?"\\"+t:t}).join("")}}});let Zt=At(Ht,{adr:{defaultType:"text",structuredValue:";",multiValue:","},anniversary:Ft,bday:Ft,caladruri:Lt,caluri:Lt,clientpidmap:Nt,email:It,fburl:Lt,fn:It,gender:Nt,geo:Lt,impp:Lt,key:Lt,kind:It,lang:{defaultType:"language-tag"},logo:Lt,member:Lt,n:{defaultType:"text",structuredValue:";",multiValue:","},nickname:kt,note:It,org:{defaultType:"text",structuredValue:";"},photo:Lt,related:Lt,rev:{defaultType:"timestamp"},role:It,sound:Lt,source:Lt,tel:{defaultType:"uri",allowedTypes:["uri","text"]},title:It,tz:{defaultType:"text",allowedTypes:["text","utc-offset","uri"]},xml:It}),Jt=At(Kt,{binary:Gt.binary,date:$t.date,"date-time":$t["date-time"],"phone-number":$t["phone-number"],uri:Gt.uri,text:$t.text,time:Gt.time,vcard:Gt.text,"utc-offset":{toICAL:function(t){return t.slice(0,7)},fromICAL:function(t){return t.slice(0,7)},decorate:function(t){return Tt.fromString(t)},undecorate:function(t){return t.toString()}}}),Qt=At(Ht,{fn:It,n:{defaultType:"text",structuredValue:";",multiValue:","},nickname:kt,photo:{defaultType:"binary",allowedTypes:["binary","uri"]},bday:{defaultType:"date-time",allowedTypes:["date-time","date"],detectType:function(t){return-1===t.indexOf("T")?"date":"date-time"}},adr:{defaultType:"text",structuredValue:";",multiValue:","},label:It,tel:{defaultType:"phone-number"},email:It,mailer:It,tz:{defaultType:"utc-offset",allowedTypes:["utc-offset","text"]},geo:{defaultType:"float",structuredValue:";"},title:It,role:It,logo:{defaultType:"binary",allowedTypes:["binary","uri"]},agent:{defaultType:"vcard",allowedTypes:["vcard","text","uri"]},org:Nt,note:kt,prodid:It,rev:{defaultType:"date-time",allowedTypes:["date-time","date"],detectType:function(t){return-1===t.indexOf("T")?"date":"date-time"}},"sort-string":It,sound:{defaultType:"binary",allowedTypes:["binary","uri"]},class:It,key:{defaultType:"binary",allowedTypes:["binary","text"]}}),Xt={name:"ical",value:Gt,param:{cutype:{values:["INDIVIDUAL","GROUP","RESOURCE","ROOM","UNKNOWN"],allowXName:!0,allowIanaToken:!0},"delegated-from":{valueType:"cal-address",multiValue:",",multiValueSeparateDQuote:!0},"delegated-to":{valueType:"cal-address",multiValue:",",multiValueSeparateDQuote:!0},encoding:{values:["8BIT","BASE64"]},fbtype:{values:["FREE","BUSY","BUSY-UNAVAILABLE","BUSY-TENTATIVE"],allowXName:!0,allowIanaToken:!0},member:{valueType:"cal-address",multiValue:",",multiValueSeparateDQuote:!0},partstat:{values:["NEEDS-ACTION","ACCEPTED","DECLINED","TENTATIVE","DELEGATED","COMPLETED","IN-PROCESS"],allowXName:!0,allowIanaToken:!0},range:{values:["THISANDFUTURE"]},related:{values:["START","END"]},reltype:{values:["PARENT","CHILD","SIBLING"],allowXName:!0,allowIanaToken:!0},role:{values:["REQ-PARTICIPANT","CHAIR","OPT-PARTICIPANT","NON-PARTICIPANT"],allowXName:!0,allowIanaToken:!0},rsvp:{values:["TRUE","FALSE"]},"sent-by":{valueType:"cal-address"},tzid:{matches:/^\//},value:{values:["binary","boolean","cal-address","date","date-time","duration","float","integer","period","recur","text","time","uri","utc-offset"],allowXName:!0,allowIanaToken:!0}},property:qt,propertyGroups:!1},te={name:"vcard4",value:$t,param:{type:{valueType:"text",multiValue:","},value:{values:["text","uri","date","time","date-time","date-and-or-time","timestamp","boolean","integer","float","utc-offset","language-tag"],allowXName:!0,allowIanaToken:!0}},property:Zt,propertyGroups:!0},ee={name:"vcard3",value:Jt,param:{type:{valueType:"text",multiValue:","},value:{values:["text","uri","date","date-time","phone-number","time","boolean","integer","float","utc-offset","vcard","binary"],allowXName:!0,allowIanaToken:!0}},property:Qt,propertyGroups:!0};const ne={strict:!0,defaultSet:Xt,defaultType:"unknown",components:{vcard:te,vcard3:ee,vevent:Xt,vtodo:Xt,vjournal:Xt,valarm:Xt,vtimezone:Xt,daylight:Xt,standard:Xt},icalendar:Xt,vcard:te,vcard3:ee,getDesignSet:function(t){return t&&t in ne.components?ne.components[t]:ne.defaultSet}},re="\r\n",ae="unknown",ie={'"':"^'","\n":"^n","^":"^^"};function se(t){"string"==typeof t[0]&&(t=[t]);let e=0,n=t.length,r="";for(;e0&&("version"!==t[1][0][0]||"4.0"!==t[1][0][3])&&(o="vcard3"),e=e||ne.getDesignSet(o);i0&&"object"==typeof t[0]&&"icaltype"in t[0]&&this.resetType(t[0].icaltype),this.isDecorated)for(;n=0;i--)n&&a[i][0]!==n||this._removeObjectByIndex(t,r,i)}addSubcomponent(t){this._components||(this._components=[],this._hydratedComponentCount=0),t.parent&&t.parent.removeSubcomponent(t);let e=this.jCal[2].push(t.jCal);return this._components[e-1]=t,this._hydratedComponentCount++,t.parent=this,t}removeSubcomponent(t){let e=this._removeObject(2,"_components",t);return e&&this._hydratedComponentCount--,e}removeAllSubcomponents(t){let e=this._removeAllObjects(2,"_components",t);return this._hydratedComponentCount=0,e}addProperty(t){if(!(t instanceof oe))throw new TypeError("must be instance of ICAL.Property");this._properties||(this._properties=[],this._hydratedPropertyCount=0),t.parent&&t.parent.removeProperty(t);let e=this.jCal[1].push(t.jCal);return this._properties[e-1]=t,this._hydratedPropertyCount++,t.parent=this,t}addPropertyWithValue(t,e){let n=new oe(t);return n.setValue(e),this.addProperty(n),n}updatePropertyWithValue(t,e){let n=this.getFirstProperty(t);return n?n.setValue(e):n=this.addPropertyWithValue(t,e),n}removeProperty(t){let e=this._removeObject(1,"_properties",t);return e&&this._hydratedPropertyCount--,e}removeAllProperties(t){let e=this._removeAllObjects(1,"_properties",t);return this._hydratedPropertyCount=0,e}toJSON(){return this.jCal}toString(){return se.component(this.jCal,this._designSet)}getTimeZoneByID(t){if(this.parent)return this.parent.getTimeZoneByID(t);if(!this._timezoneCache)return null;if(this._timezoneCache.has(t))return this._timezoneCache.get(t);const e=this.getAllSubcomponents("vtimezone");for(const n of e)if(n.getFirstProperty("tzid").getFirstValue()===t){const e=new at({component:n,tzid:t});return this._timezoneCache.set(t,e),e}return null}}class de{constructor(t){this.ruleDates=[],this.exDates=[],this.fromData(t)}complete=!1;ruleIterators=null;ruleDates=null;exDates=null;ruleDateInc=0;exDateInc=0;exDate=null;ruleDate=null;dtstart=null;last=null;fromData(t){let e=dt(t.dtstart,J);if(!e)throw new Error(".dtstart (ICAL.Time) must be given");if(this.dtstart=e,t.component)this._init(t.component);else{if(this.last=dt(t.last,J)||e.clone(),!t.ruleIterators)throw new Error(".ruleIterators or .component must be given");this.ruleIterators=t.ruleIterators.map(function(t){return dt(t,St)}),this.ruleDateInc=t.ruleDateInc,this.exDateInc=t.exDateInc,t.ruleDates&&(this.ruleDates=t.ruleDates.map(t=>dt(t,J)),this.ruleDate=this.ruleDates[this.ruleDateInc]),t.exDates&&(this.exDates=t.exDates.map(t=>dt(t,J)),this.exDate=this.exDates[this.exDateInc]),void 0!==t.complete&&(this.complete=t.complete)}}_compare_special(t,e){return!t.isDate&&e.isDate?new J({year:t.year,month:t.month,day:t.day}).compare(e):t.compare(e)}next(){let t,e,n,r=0;for(;;){if(r++>500)throw new Error("max tries have occurred, rule may be impossible to fulfill.");if(e=this.ruleDate,t=this._nextRecurrenceIter(this.last),!e&&!t){this.complete=!0;break}if((!e||t&&e.compare(t.last)>0)&&(e=t.last.clone(),t.next()),this.ruleDate===e&&this._nextRuleDay(),this.last=e,!this.exDate||(n=this._compare_special(this.last,this.exDate),n>0&&this._nextExDay(),0!==n))return this.last;this._nextExDay()}}toJSON(){function t(t){return t.toJSON()}let e=Object.create(null);return e.ruleIterators=this.ruleIterators.map(t),this.ruleDates&&(e.ruleDates=this.ruleDates.map(t)),this.exDates&&(e.exDates=this.exDates.map(t)),e.ruleDateInc=this.ruleDateInc,e.exDateInc=this.exDateInc,e.last=this.last.toJSON(),e.dtstart=this.dtstart.toJSON(),e.complete=this.complete,e}_extractDates(t,e){let n=[],r=t.getAllProperties(e);for(let t=0,e=r.length;tt.compare(e));n.splice(t,0,e)}return n}_init(t){if(this.ruleIterators=[],this.last=this.dtstart.clone(),!t.hasProperty("rdate")&&!t.hasProperty("rrule")&&!t.hasProperty("recurrence-id"))return this.ruleDate=this.last.clone(),void(this.complete=!0);if(t.hasProperty("rdate")&&(this.ruleDates=this._extractDates(t,"rdate"),this.ruleDates[0]&&this.ruleDates[0].compare(this.dtstart)<0?(this.ruleDateInc=0,this.last=this.ruleDates[0].clone()):this.ruleDateInc=ut(this.ruleDates,this.last,(t,e)=>t.compare(e)),this.ruleDate=this.ruleDates[this.ruleDateInc]),t.hasProperty("rrule")){let e,n,r=t.getAllProperties("rrule"),a=0,i=r.length;for(;a0)&&(r=e);return r}}class ce{constructor(t,e){t instanceof le||(e=t,t=null),this.component=t||new le("vevent"),this._rangeExceptionCache=Object.create(null),this.exceptions=Object.create(null),this.rangeExceptions=[],e&&e.strictExceptions&&(this.strictExceptions=e.strictExceptions),e&&e.exceptions?e.exceptions.forEach(this.relateException,this):this.component.parent&&!this.isRecurrenceException()&&this.component.parent.getAllSubcomponents("vevent").forEach(function(t){t.hasProperty("recurrence-id")&&this.relateException(t)},this)}static THISANDFUTURE="THISANDFUTURE";exceptions=null;strictExceptions=!1;relateException(t){if(this.isRecurrenceException())throw new Error("cannot relate exception to exceptions");if(t instanceof le&&(t=new ce(t)),this.strictExceptions&&t.uid!==this.uid)throw new Error("attempted to relate unrelated exception");let e=t.recurrenceId.toString();if(this.exceptions[e]=t,t.modifiesFuture()){let n=[t.recurrenceId.toUnixTime(),e],r=ut(this.rangeExceptions,n,ue);this.rangeExceptions.splice(r,0,n)}}modifiesFuture(){return!!this.component.hasProperty("recurrence-id")&&this.component.getFirstProperty("recurrence-id").getParameter("range")===ce.THISANDFUTURE}findRangeException(t){if(!this.rangeExceptions.length)return null;let e=t.toUnixTime(),n=ut(this.rangeExceptions,[e],ue);if(n-=1,n<0)return null;let r=this.rangeExceptions[n];return ee[0]?1:e[0]>t[0]?-1:0}var he={foldLength:75,debug:!1,newLineChar:"\r\n",Binary:H,Component:le,ComponentParser:class{constructor(t){void 0===t&&(t={});for(let[e,n]of Object.entries(t))this[e]=n}parseEvent=!0;parseTimezone=!0;oncomplete=function(){};onerror=function(t){};ontimezone=function(t){};onevent=function(t){};process(t){"string"==typeof t&&(t=et(t)),t instanceof le||(t=new le(t));let e,n=t.getAllSubcomponents(),r=0,a=n.length;for(;r= 16");if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,e){if((n=n||0)<0||n+16>e.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let t=0;t<16;++t)e[n+t]=r[t];return e}return function(t,e=0){return(Ae[t[e+0]]+Ae[t[e+1]]+Ae[t[e+2]]+Ae[t[e+3]]+"-"+Ae[t[e+4]]+Ae[t[e+5]]+"-"+Ae[t[e+6]]+Ae[t[e+7]]+"-"+Ae[t[e+8]]+Ae[t[e+9]]+"-"+Ae[t[e+10]]+Ae[t[e+11]]+Ae[t[e+12]]+Ae[t[e+13]]+Ae[t[e+14]]+Ae[t[e+15]]).toLowerCase()}(r)};function Te(t,e,n,r,a,i,s,o){var l="function"==typeof t?t.options:t;return e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),l._scopeId="data-v-"+i,{exports:t,options:l}}const ge=Te({name:"CalendarAvailability",components:{NcDateTimePickerNative:v.A,NcButton:y.A,IconAdd:F.A,IconDelete:R.A},props:{slots:{type:Object,required:!0},loading:{type:Boolean,default:!1},l10nTo:{type:String,required:!0},l10nDeleteSlot:{type:String,required:!0},l10nEmptyDay:{type:String,required:!0},l10nAddSlot:{type:String,required:!0},l10nWeekDayListLabel:{type:String,default:"Weekdays"},l10nMonday:{type:String,required:!0},l10nTuesday:{type:String,required:!0},l10nWednesday:{type:String,required:!0},l10nThursday:{type:String,required:!0},l10nFriday:{type:String,required:!0},l10nSaturday:{type:String,required:!0},l10nSunday:{type:String,required:!0},l10nStartPickerLabel:{type:Function,default:t=>`Pick a start time for ${t}`},l10nEndPickerLabel:{type:Function,default:t=>`Pick a end time for ${t}`}},data(){return{internalSlots:this.slotsToInternalData(this.slots)}},watch:{slots(){this.internalSlots=this.slotsToInternalData(this.slots)}},methods:{timeStampSlotsToDateObjectSlots:t=>t.map(t=>({start:new Date(1e3*t.start),end:new Date(1e3*t.end)})),slotsToInternalData(){const t=[{id:"MO",displayName:this.l10nMonday,slots:this.timeStampSlotsToDateObjectSlots(this.slots.MO)},{id:"TU",displayName:this.l10nTuesday,slots:this.timeStampSlotsToDateObjectSlots(this.slots.TU)},{id:"WE",displayName:this.l10nWednesday,slots:this.timeStampSlotsToDateObjectSlots(this.slots.WE)},{id:"TH",displayName:this.l10nThursday,slots:this.timeStampSlotsToDateObjectSlots(this.slots.TH)},{id:"FR",displayName:this.l10nFriday,slots:this.timeStampSlotsToDateObjectSlots(this.slots.FR)},{id:"SA",displayName:this.l10nSaturday,slots:this.timeStampSlotsToDateObjectSlots(this.slots.SA)}],e={id:"SU",displayName:this.l10nSunday,slots:this.timeStampSlotsToDateObjectSlots(this.slots.SU)};return 1===(0,a.JN)()?[...t,e]:[e,...t]},internalDataToSlots(){const t={};return this.internalSlots.forEach(({id:e,slots:n})=>{t[e]=n.map(t=>({start:Math.round(t.start.getTime()/1e3),end:Math.round(t.end.getTime()/1e3)}))}),t},addSlot(t){const e=new Date;e.setHours(9,0,0,0);const n=new Date;n.setHours(17,0,0,0),t.slots.push({start:e,end:n}),this.onChangeSlots()},removeSlot(t,e){t.slots.splice(e,1),this.onChangeSlots()},onChangeSlots(){this.$emit("update:slots",this.internalDataToSlots())}}},function(){var t=this,e=t._self._c;return e("ul",{staticClass:"week-day-container",attrs:{"aria-label":t.l10nWeekDayListLabel}},[t._l(t.internalSlots,function(n){return[e("li",{key:`day-label-${n.id}`,staticClass:"day-container"},[e("div",{staticClass:"label-weekday"},[e("span",{attrs:{id:n.displayName+"-label"}},[t._v(t._s(n.displayName))])]),e("div",{key:`day-slots-${n.id}`,staticClass:"availability-slots"},[e("div",{staticClass:"availability-slot-group"},[t._l(n.slots,function(r,a){return[e("div",{key:`slot-${n.id}-${a}`,staticClass:"availability-slot"},[e("NcDateTimePickerNative",{staticClass:"start-date",attrs:{id:`start-${n.id}-${a}`,type:"time",label:t.l10nStartPickerLabel?.(n.displayName),"hide-label":!0},on:{change:t.onChangeSlots},model:{value:r.start,callback:function(e){t.$set(r,"start",e)},expression:"slot.start"}}),e("span",{staticClass:"to-text"},[t._v(" "+t._s(t.l10nTo)+" ")]),e("NcDateTimePickerNative",{staticClass:"end-date",attrs:{id:`end-${n.id}-${a}`,type:"time",label:t.l10nEndPickerLabel?.(n.displayName),"hide-label":!0},on:{change:t.onChangeSlots},model:{value:r.end,callback:function(e){t.$set(r,"end",e)},expression:"slot.end"}}),e("NcButton",{key:`slot-${n.id}-${a}-btn`,staticClass:"button",attrs:{type:"tertiary","aria-label":t.l10nDeleteSlot,title:t.l10nDeleteSlot},on:{click:function(e){return t.removeSlot(n,a)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconDelete",{attrs:{size:20}})]},proxy:!0}],null,!0)})],1)]})],2),0===n.slots.length?e("span",{staticClass:"empty-content"},[t._v(" "+t._s(t.l10nEmptyDay)+" ")]):t._e()]),e("NcButton",{key:`add-slot-${n.id}`,staticClass:"add-another button",attrs:{disabled:t.loading,title:t.l10nAddSlot,"aria-label":t.l10nAddSlot},on:{click:function(e){return t.addSlot(n)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconAdd",{attrs:{size:20}})]},proxy:!0}],null,!0)})],1)]})],2)},[],0,0,"91e2d87d").exports,Se=(0,p.YK)().detectUser().setApp("@nextcloud/calendar-availability-vue").build();var ve=n(62715),_e=n(33455);const Ee=n.n(_e)()(t=>{const e=(0,d.dC)(`dav/${t}/${(0,s.HW)().uid}`),n=(0,ve.UU)(e),r=t=>{n.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})};return(0,s.zo)(r),r((0,s.do)()),n});var be=n(32073),Ce=n(87485);const De=(0,r.pM)({__name:"AvailabilityForm",setup(t){const e=(0,Ce.F)().core.user?.timezone??Intl.DateTimeFormat().resolvedOptions().timeZone,n=(0,r.KR)(!0),i=(0,r.KR)(!1),s=(0,r.KR)({MO:[],TU:[],WE:[],TH:[],FR:[],SA:[],SU:[]}),c=(0,r.KR)("yes"===(0,l.C)("dav","user_status_automation"));return(0,r.sV)(async()=>{try{const t=await async function(){const t=Ee("calendars"),e=await t.customRequest("inbox",{method:"PROPFIND",data:'\n\t\t\t\n\t\t\t \n\t\t\t\t\n\t\t\t \n\t\t\t'}),n=await(0,ve.h4)(await e.text());if(!n)return;const r=n?.multistatus?.response[0]?.propstat?.prop["calendar-availability"];return r?function(t){const e=he.parse(t),n=new he.Component(e),r=n.getFirstSubcomponent("vavailability");let a;const i=n.getFirstSubcomponent("vtimezone");i&&(a=i.getFirstProperty("tzid").getFirstValue());const s=r.getAllSubcomponents("available"),o={MO:[],TU:[],WE:[],TH:[],FR:[],SA:[],SU:[]};return s.forEach(t=>{const e=t.getFirstProperty("dtstart").getFirstValue(),n=t.getFirstProperty("dtend").getFirstValue(),r=t.getFirstProperty("rrule"),a=new Date;a.setHours(e.hour,e.minute,0,0);const i=new Date;i.setHours(n.hour,n.minute,0,0),"WEEKLY"===r.getFirstValue().freq?r.getFirstValue().getComponent("BYDAY").forEach(t=>{o[t].push({start:a.getTime()/1e3,end:i.getTime()/1e3})}):Se.warn("rrule not supported",{rrule:r.toICALString()})}),{slots:o,timezoneId:a}}(r):void 0}();t?(s.value=t.slots,A.debug("availability loaded",{slots:s.value})):A.debug("no availability is set")}catch(t){A.error("could not load existing availability",{error:t}),(0,o.Qg)((0,a.t)("dav","Failed to load availability"))}finally{n.value=!1}}),{__sfc:!0,timezone:e,loading:n,saving:i,slots:s,automated:c,save:async function(){i.value=!0;try{await async function(t,e){const n=function(t,e){const n=new he.Component("vcalendar");n.addPropertyWithValue("prodid","Nextcloud DAV app");const r=(0,V.E$)(e);if(r){const t=new he.Component(he.parse(r));n.addSubcomponent(t)}else{const t=new he.Component("vtimezone");t.addPropertyWithValue("tzid",e),n.addSubcomponent(t)}const a=new he.Component("vavailability"),i=t.reduce((t,e)=>{const n=new Date(1e3*e.start),r=new Date(1e3*e.end),a=[n.getHours(),n.getMinutes(),r.getHours(),r.getMinutes()].join("-");return{...t,[a]:[...t[a]??[],e]}},{});return Object.keys(i).map(t=>{const n=i[t],r=n[0].start,a=n[0].end,s=n.map(t=>t.day).filter((t,e,n)=>n.indexOf(t)===e),o=new he.Component("available");return o.addPropertyWithValue("dtstart",he.Time.fromJSDate(new Date(1e3*r),!1)).setParameter("tzid",e),o.addPropertyWithValue("dtend",he.Time.fromJSDate(new Date(1e3*a),!1)).setParameter("tzid",e),o.addPropertyWithValue("uid",ye()),o.addPropertyWithValue("rrule",{freq:"WEEKLY",byday:s}),o}).map(a.addSubcomponent.bind(a)),n.addSubcomponent(a),n.toString()}([...Object.keys(t).flatMap(e=>t[e].map(t=>({...t,day:e})))],e);A.debug("New availability ical created",{vavailability:n});const r=Ee("calendars");await r.customRequest("inbox",{method:"PROPPATCH",data:`\n\t\t\t\n\t\t\t \n\t\t\t\t\n\t\t\t\t ${n}\n\t\t\t\t\n\t\t\t \n\t\t\t`})}(s.value,e),c.value?await async function(){return await h.Ay.post((0,d.KT)("/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"dav",configKey:"user_status_automation"}),{configValue:"yes"})}():await async function(){return await h.Ay.delete((0,d.KT)("/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"dav",configKey:"user_status_automation"}))}(),(0,o.Te)((0,a.t)("dav","Saved availability"))}catch(t){console.error("could not save availability",t),(0,o.Qg)((0,a.t)("dav","Failed to save availability"))}finally{i.value=!1}},CalendarAvailability:ge,NcButton:y.A,NcCheckboxRadioSwitch:be.A,t:a.t}}});var xe=n(65368),Ue={};Ue.styleTagTransform=I(),Ue.setAttributes=O(),Ue.insert=U().bind(null,"head"),Ue.domAPI=D(),Ue.insertStyleElement=B(),b()(xe.A,Ue),xe.A&&xe.A.locals&&xe.A.locals;const we=(0,P.A)(De,function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e("div",[e(n.CalendarAvailability,{attrs:{slots:n.slots,loading:n.loading,"l10n-to":n.t("dav","to"),"l10n-delete-slot":n.t("dav","Delete slot"),"l10n-empty-day":n.t("dav","No working hours set"),"l10n-add-slot":n.t("dav","Add slot"),"l10n-week-day-list-label":n.t("dav","Weekdays"),"l10n-monday":n.t("dav","Monday"),"l10n-tuesday":n.t("dav","Tuesday"),"l10n-wednesday":n.t("dav","Wednesday"),"l10n-thursday":n.t("dav","Thursday"),"l10n-friday":n.t("dav","Friday"),"l10n-saturday":n.t("dav","Saturday"),"l10n-sunday":n.t("dav","Sunday"),"l10n-start-picker-label":t=>n.t("dav","Pick a start time for {dayName}",{dayName:t}),"l10n-end-picker-label":t=>n.t("dav","Pick a end time for {dayName}",{dayName:t})},on:{"update:slots":function(t){n.slots=t}}}),t._v(" "),e(n.NcCheckboxRadioSwitch,{model:{value:n.automated,callback:function(t){n.automated=t},expression:"automated"}},[t._v("\n\t\t"+t._s(n.t("dav",'Automatically set user status to "Do not disturb" outside of availability to mute all notifications.'))+"\n\t")]),t._v(" "),e(n.NcButton,{attrs:{disabled:n.loading||n.saving,variant:"primary"},on:{click:n.save}},[t._v("\n\t\t"+t._s(n.t("dav","Save"))+"\n\t")])],1)},[],!1,null,"e0a387ae",null).exports,Oe={name:"Availability",components:{NcSettingsSection:i.A,AbsenceForm:z,AvailabilityForm:we},data:()=>({hideAbsenceSettings:(0,l.C)("dav","hide_absence_settings",!0)})},Ye=(0,P.A)(Oe,function(){var t=this,e=t._self._c;return e("div",[e("NcSettingsSection",{attrs:{id:"availability",name:t.$t("dav","Availability"),description:t.$t("dav","If you configure your working hours, other people will see when you are out of office when they book a meeting.")}},[e("AvailabilityForm")],1),t._v(" "),t.hideAbsenceSettings?t._e():e("NcSettingsSection",{attrs:{id:"absence",name:t.$t("dav","Absence"),description:t.$t("dav","Configure your next absence period.")}},[e("AbsenceForm")],1)],1)},[],!1,null,null,null).exports;r.Ay.prototype.$t=a.Tl,new(r.Ay.extend(Ye))({}).$mount("#settings-personal-availability")},12795(t,e,n){"use strict";n.d(e,{A:()=>o});var r=n(71354),a=n.n(r),i=n(76314),s=n.n(i)()(a());s.push([t.id,".availability-day[data-v-91e2d87d] {\n padding: 0 10px 0 10px;\n position: absolute;\n}\n.availability-slots[data-v-91e2d87d] {\n max-width: 332px;\n width: 100%;\n display: flex;\n justify-content: flex-start;\n white-space: nowrap;\n}\n.availability-slot[data-v-91e2d87d] {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.availability-slot-group[data-v-91e2d87d] {\n display: flex;\n flex-direction: column;\n}\n.time-zone[data-v-91e2d87d] {\n padding: 32px 12px 12px 0;\n}\n.week-day-container[data-v-91e2d87d] {\n box-sizing: border-box;\n margin-bottom: 32px;\n max-width: 500px;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n.button[data-v-91e2d87d] {\n align-self: flex-end;\n}\n.label-weekday[data-v-91e2d87d] {\n position: relative;\n display: flex;\n align-items: flex-start;\n min-width: 77px;\n width: 77px;\n}\n.label-weekday > span[data-v-91e2d87d] {\n height: 50px;\n display: flex;\n align-items: center;\n}\n.add-another[data-v-91e2d87d] {\n background-color: transparent;\n border: none;\n opacity: 0.5;\n display: inline-flex;\n padding: 0;\n margin: 0;\n margin-bottom: 3px;\n}\n.add-another[data-v-91e2d87d]:hover {\n opacity: 1;\n}\n.to-text[data-v-91e2d87d] {\n padding-right: 12px;\n}\n.time-zone-text[data-v-91e2d87d] {\n padding-left: 22px;\n}\n.empty-content[data-v-91e2d87d] {\n color: var(--color-text-lighter);\n display: inline-flex;\n align-items: center;\n}\n.start-date[data-v-91e2d87d] {\n padding-right: 12px;\n}\n.day-container[data-v-91e2d87d] {\n display: flex;\n max-width: 500px;\n width: 100%;\n gap: 24px;\n border-top: 1px solid var(--color-border);\n padding-top: calc(3 * var(--default-grid-baseline));\n margin-top: calc(2 * var(--default-grid-baseline));\n align-items: center;\n}\n.day-container > button[data-v-91e2d87d] {\n align-self: center;\n}","",{version:3,sources:["webpack://./node_modules/@nextcloud/calendar-availability-vue/dist/assets/index-Ctj4Wyhb.css"],names:[],mappings:"AAAA;EACE,sBAAsB;EACtB,kBAAkB;AACpB;AACA;EACE,gBAAgB;EAChB,WAAW;EACX,aAAa;EACb,2BAA2B;EAC3B,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,sBAAsB;AACxB;AACA;EACE,yBAAyB;AAC3B;AACA;EACE,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,WAAW;EACX,aAAa;EACb,sBAAsB;EACtB,uBAAuB;AACzB;AACA;EACE,oBAAoB;AACtB;AACA;EACE,kBAAkB;EAClB,aAAa;EACb,uBAAuB;EACvB,eAAe;EACf,WAAW;AACb;AACA;EACE,YAAY;EACZ,aAAa;EACb,mBAAmB;AACrB;AACA;EACE,6BAA6B;EAC7B,YAAY;EACZ,YAAY;EACZ,oBAAoB;EACpB,UAAU;EACV,SAAS;EACT,kBAAkB;AACpB;AACA;EACE,UAAU;AACZ;AACA;EACE,mBAAmB;AACrB;AACA;EACE,kBAAkB;AACpB;AACA;EACE,gCAAgC;EAChC,oBAAoB;EACpB,mBAAmB;AACrB;AACA;EACE,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,gBAAgB;EAChB,WAAW;EACX,SAAS;EACT,yCAAyC;EACzC,mDAAmD;EACnD,kDAAkD;EAClD,mBAAmB;AACrB;AACA;EACE,kBAAkB;AACpB",sourcesContent:[".availability-day[data-v-91e2d87d] {\n padding: 0 10px 0 10px;\n position: absolute;\n}\n.availability-slots[data-v-91e2d87d] {\n max-width: 332px;\n width: 100%;\n display: flex;\n justify-content: flex-start;\n white-space: nowrap;\n}\n.availability-slot[data-v-91e2d87d] {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.availability-slot-group[data-v-91e2d87d] {\n display: flex;\n flex-direction: column;\n}\n.time-zone[data-v-91e2d87d] {\n padding: 32px 12px 12px 0;\n}\n.week-day-container[data-v-91e2d87d] {\n box-sizing: border-box;\n margin-bottom: 32px;\n max-width: 500px;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n.button[data-v-91e2d87d] {\n align-self: flex-end;\n}\n.label-weekday[data-v-91e2d87d] {\n position: relative;\n display: flex;\n align-items: flex-start;\n min-width: 77px;\n width: 77px;\n}\n.label-weekday > span[data-v-91e2d87d] {\n height: 50px;\n display: flex;\n align-items: center;\n}\n.add-another[data-v-91e2d87d] {\n background-color: transparent;\n border: none;\n opacity: 0.5;\n display: inline-flex;\n padding: 0;\n margin: 0;\n margin-bottom: 3px;\n}\n.add-another[data-v-91e2d87d]:hover {\n opacity: 1;\n}\n.to-text[data-v-91e2d87d] {\n padding-right: 12px;\n}\n.time-zone-text[data-v-91e2d87d] {\n padding-left: 22px;\n}\n.empty-content[data-v-91e2d87d] {\n color: var(--color-text-lighter);\n display: inline-flex;\n align-items: center;\n}\n.start-date[data-v-91e2d87d] {\n padding-right: 12px;\n}\n.day-container[data-v-91e2d87d] {\n display: flex;\n max-width: 500px;\n width: 100%;\n gap: 24px;\n border-top: 1px solid var(--color-border);\n padding-top: calc(3 * var(--default-grid-baseline));\n margin-top: calc(2 * var(--default-grid-baseline));\n align-items: center;\n}\n.day-container > button[data-v-91e2d87d] {\n align-self: center;\n}"],sourceRoot:""}]);const o=s},75314(t,e,n){"use strict";n.d(e,{A:()=>o});var r=n(71354),a=n.n(r),i=n(76314),s=n.n(i)()(a());s.push([t.id,".absence[data-v-7fe2e3cc]{display:flex;flex-direction:column;gap:5px}.absence__dates[data-v-7fe2e3cc]{display:flex;gap:10px;width:100%}.absence__dates__picker[data-v-7fe2e3cc]{flex:1 auto}.absence__dates__picker[data-v-7fe2e3cc] .native-datetime-picker--input{margin-bottom:0}.absence__buttons[data-v-7fe2e3cc]{display:flex;gap:5px}","",{version:3,sources:["webpack://./apps/dav/src/components/AbsenceForm.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,qBAAA,CACA,OAAA,CAEA,iCACC,YAAA,CACA,QAAA,CACA,UAAA,CAEA,yCACC,WAAA,CAEA,wEACC,eAAA,CAKH,mCACC,YAAA,CACA,OAAA",sourcesContent:["\n.absence {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 5px;\n\n\t&__dates {\n\t\tdisplay: flex;\n\t\tgap: 10px;\n\t\twidth: 100%;\n\n\t\t&__picker {\n\t\t\tflex: 1 auto;\n\n\t\t\t:deep(.native-datetime-picker--input) {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tgap: 5px;\n\t}\n}\n"],sourceRoot:""}]);const o=s},65368(t,e,n){"use strict";n.d(e,{A:()=>o});var r=n(71354),a=n.n(r),i=n(76314),s=n.n(i)()(a());s.push([t.id,"[data-v-e0a387ae] .availability-day{padding:0 10px 0 10px;position:absolute}[data-v-e0a387ae] .availability-slots{display:flex;white-space:normal}[data-v-e0a387ae] .availability-slot{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap}[data-v-e0a387ae] .availability-slot-group{display:flex;flex-direction:column}[data-v-e0a387ae] .mx-input-wrapper{width:85px}[data-v-e0a387ae] .mx-datepicker{width:97px}.time-zone[data-v-e0a387ae]{padding-block:32px 12px;padding-inline:0 12px;display:flex;flex-wrap:wrap}.time-zone__heading[data-v-e0a387ae]{margin-inline-end:calc(var(--default-grid-baseline)*2);line-height:var(--default-clickable-area);font-weight:bold}.grid-table[data-v-e0a387ae]{display:grid;margin-bottom:32px;grid-column-gap:24px;grid-row-gap:6px;grid-template-columns:min-content auto min-content;max-width:500px}.button[data-v-e0a387ae]{align-self:flex-end}[data-v-e0a387ae] .label-weekday{position:relative;display:inline-flex;padding-top:4px;align-self:center}[data-v-e0a387ae] .delete-slot{padding-bottom:unset}[data-v-e0a387ae] .add-another{align-self:center}.to-text[data-v-e0a387ae]{padding-inline-end:12px}.empty-content[data-v-e0a387ae]{align-self:center;color:var(--color-text-maxcontrast);margin-block-start:var(--default-grid-baseline)}","",{version:3,sources:["webpack://./apps/dav/src/components/AvailabilityForm.vue"],names:[],mappings:"AACA,oCACC,qBAAA,CACA,iBAAA,CAGD,sCACC,YAAA,CACA,kBAAA,CAGD,qCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,cAAA,CAGD,2CACC,YAAA,CACA,qBAAA,CAGD,oCACC,UAAA,CAGD,iCACC,UAAA,CAGD,4BACC,uBAAA,CACA,qBAAA,CACA,YAAA,CACA,cAAA,CAEA,qCACC,sDAAA,CACA,yCAAA,CACA,gBAAA,CAIF,6BACC,YAAA,CACA,kBAAA,CACA,oBAAA,CACA,gBAAA,CACA,kDAAA,CACA,eAAA,CAGD,yBACC,mBAAA,CAGD,iCACC,iBAAA,CACA,mBAAA,CACA,eAAA,CACA,iBAAA,CAGD,+BACC,oBAAA,CAGD,+BACC,iBAAA,CAGD,0BACC,uBAAA,CAGD,gCACC,iBAAA,CACA,mCAAA,CACA,+CAAA",sourcesContent:["\n:deep(.availability-day) {\n\tpadding: 0 10px 0 10px;\n\tposition: absolute;\n}\n\n:deep(.availability-slots) {\n\tdisplay: flex;\n\twhite-space: normal;\n}\n\n:deep(.availability-slot) {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tflex-wrap: wrap;\n}\n\n:deep(.availability-slot-group) {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n:deep(.mx-input-wrapper) {\n\twidth: 85px;\n}\n\n:deep(.mx-datepicker) {\n\twidth: 97px;\n}\n\n.time-zone {\n\tpadding-block: 32px 12px;\n\tpadding-inline: 0 12px;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t&__heading {\n\t\tmargin-inline-end: calc(var(--default-grid-baseline) * 2);\n\t\tline-height: var(--default-clickable-area);\n\t\tfont-weight: bold;\n\t}\n}\n\n.grid-table {\n\tdisplay: grid;\n\tmargin-bottom: 32px;\n\tgrid-column-gap: 24px;\n\tgrid-row-gap: 6px;\n\tgrid-template-columns: min-content auto min-content;\n\tmax-width: 500px;\n}\n\n.button {\n\talign-self: flex-end;\n}\n\n:deep(.label-weekday) {\n\tposition: relative;\n\tdisplay: inline-flex;\n\tpadding-top: 4px;\n\talign-self: center;\n}\n\n:deep(.delete-slot) {\n\tpadding-bottom: unset;\n}\n\n:deep(.add-another) {\n\talign-self: center;\n}\n\n.to-text {\n\tpadding-inline-end: 12px;\n}\n\n.empty-content {\n\talign-self: center;\n\tcolor: var(--color-text-maxcontrast);\n\tmargin-block-start: var(--default-grid-baseline);\n}\n"],sourceRoot:""}]);const o=s},46447(t,e,n){"use strict";e.E$=void 0;const r=n(61080);function a(t){const{n:e,f:n,t:a,r:i,s}=t;return[`TZNAME:${e}`,`TZOFFSETFROM:${n}`,`TZOFFSETTO:${a||n}`,`DTSTART:${s||r.defaultStart}`,...i?[`RRULE:FREQ=${i.f||"YEARLY"};BYMONTH=${i.m};BYDAY=${i.d}`]:[]]}e.E$=function(t,e=!0){const n=function(t,e=!0){const n=r.zonesMap.get(t);if(n){const{s:r,d:i}=n;return[...e?["BEGIN:VTIMEZONE"]:[],`TZID:${t}`,"BEGIN:STANDARD",...a(r),"END:STANDARD",...i?["BEGIN:DAYLIGHT",...a(i),"END:DAYLIGHT"]:[],...e?["END:VTIMEZONE"]:[]]}}(t,e);return null==n?void 0:n.join("\r\n")}},61080(t,e){"use strict";e.zonesMap=e.defaultStart=void 0,e.defaultStart="19700101T000000",e.zonesMap=new Map([["Africa/Abidjan",{s:{f:"+0000",n:"GMT"}}],["Africa/Accra",{s:{f:"+0000",n:"GMT"}}],["Africa/Addis_Ababa",{s:{f:"+0300",n:"EAT"}}],["Africa/Algiers",{s:{f:"+0100",n:"CET"}}],["Africa/Asmara",{s:{f:"+0300",n:"EAT"}}],["Africa/Bamako",{s:{f:"+0000",n:"GMT"}}],["Africa/Bangui",{s:{f:"+0100",n:"WAT"}}],["Africa/Banjul",{s:{f:"+0000",n:"GMT"}}],["Africa/Bissau",{s:{f:"+0000",n:"GMT"}}],["Africa/Blantyre",{s:{f:"+0200",n:"CAT"}}],["Africa/Brazzaville",{s:{f:"+0100",n:"WAT"}}],["Africa/Bujumbura",{s:{f:"+0200",n:"CAT"}}],["Africa/Cairo",{s:{f:"+0200",n:"EET"}}],["Africa/Casablanca",{s:{f:"+0100",n:"+01"}}],["Africa/Ceuta",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Africa/Conakry",{s:{f:"+0000",n:"GMT"}}],["Africa/Dakar",{s:{f:"+0000",n:"GMT"}}],["Africa/Dar_es_Salaam",{s:{f:"+0300",n:"EAT"}}],["Africa/Djibouti",{s:{f:"+0300",n:"EAT"}}],["Africa/Douala",{s:{f:"+0100",n:"WAT"}}],["Africa/El_Aaiun",{s:{f:"+0100",n:"+01"}}],["Africa/Freetown",{s:{f:"+0000",n:"GMT"}}],["Africa/Gaborone",{s:{f:"+0200",n:"CAT"}}],["Africa/Harare",{s:{f:"+0200",n:"CAT"}}],["Africa/Johannesburg",{s:{f:"+0200",n:"SAST"}}],["Africa/Juba",{s:{f:"+0300",n:"EAT"}}],["Africa/Kampala",{s:{f:"+0300",n:"EAT"}}],["Africa/Khartoum",{s:{f:"+0200",n:"CAT"}}],["Africa/Kigali",{s:{f:"+0200",n:"CAT"}}],["Africa/Kinshasa",{s:{f:"+0100",n:"WAT"}}],["Africa/Lagos",{s:{f:"+0100",n:"WAT"}}],["Africa/Libreville",{s:{f:"+0100",n:"WAT"}}],["Africa/Lome",{s:{f:"+0000",n:"GMT"}}],["Africa/Luanda",{s:{f:"+0100",n:"WAT"}}],["Africa/Lubumbashi",{s:{f:"+0200",n:"CAT"}}],["Africa/Lusaka",{s:{f:"+0200",n:"CAT"}}],["Africa/Malabo",{s:{f:"+0100",n:"WAT"}}],["Africa/Maputo",{s:{f:"+0200",n:"CAT"}}],["Africa/Maseru",{s:{f:"+0200",n:"SAST"}}],["Africa/Mbabane",{s:{f:"+0200",n:"SAST"}}],["Africa/Mogadishu",{s:{f:"+0300",n:"EAT"}}],["Africa/Monrovia",{s:{f:"+0000",n:"GMT"}}],["Africa/Nairobi",{s:{f:"+0300",n:"EAT"}}],["Africa/Ndjamena",{s:{f:"+0100",n:"WAT"}}],["Africa/Niamey",{s:{f:"+0100",n:"WAT"}}],["Africa/Nouakchott",{s:{f:"+0000",n:"GMT"}}],["Africa/Ouagadougou",{s:{f:"+0000",n:"GMT"}}],["Africa/Porto-Novo",{s:{f:"+0100",n:"WAT"}}],["Africa/Sao_Tome",{s:{f:"+0100",n:"WAT"}}],["Africa/Tripoli",{s:{f:"+0200",n:"EET"}}],["Africa/Tunis",{s:{f:"+0100",n:"CET"}}],["Africa/Windhoek",{s:{f:"+0200",n:"CAT"}}],["America/Adak",{s:{f:"-0900",t:"-1000",n:"HST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-1000",t:"-0900",n:"HDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Anchorage",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Anguilla",{s:{f:"-0400",n:"AST"}}],["America/Antigua",{s:{f:"-0400",n:"AST"}}],["America/Araguaina",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Buenos_Aires",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Catamarca",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Cordoba",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Jujuy",{s:{f:"-0300",n:"-03"}}],["America/Argentina/La_Rioja",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Mendoza",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Rio_Gallegos",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Salta",{s:{f:"-0300",n:"-03"}}],["America/Argentina/San_Juan",{s:{f:"-0300",n:"-03"}}],["America/Argentina/San_Luis",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Tucuman",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Ushuaia",{s:{f:"-0300",n:"-03"}}],["America/Aruba",{s:{f:"-0400",n:"AST"}}],["America/Asuncion",{s:{f:"-0300",t:"-0400",n:"-04",s:"19700322T000000",r:{m:3,d:"4SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701004T000000",r:{m:10,d:"1SU"}}}],["America/Atikokan",{s:{f:"-0500",n:"EST"}}],["America/Bahia_Banderas",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Bahia",{s:{f:"-0300",n:"-03"}}],["America/Barbados",{s:{f:"-0400",n:"AST"}}],["America/Belem",{s:{f:"-0300",n:"-03"}}],["America/Belize",{s:{f:"-0600",n:"CST"}}],["America/Blanc-Sablon",{s:{f:"-0400",n:"AST"}}],["America/Boa_Vista",{s:{f:"-0400",n:"-04"}}],["America/Bogota",{s:{f:"-0500",n:"-05"}}],["America/Boise",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Cambridge_Bay",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Campo_Grande",{s:{f:"-0400",n:"-04",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Cancun",{s:{f:"-0500",n:"EST"}}],["America/Caracas",{s:{f:"-0400",n:"-04"}}],["America/Cayenne",{s:{f:"-0300",n:"-03"}}],["America/Cayman",{s:{f:"-0500",n:"EST"}}],["America/Chicago",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Chihuahua",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Costa_Rica",{s:{f:"-0600",n:"CST"}}],["America/Creston",{s:{f:"-0700",n:"MST"}}],["America/Cuiaba",{s:{f:"-0400",n:"-04",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Curacao",{s:{f:"-0400",n:"AST"}}],["America/Danmarkshavn",{s:{f:"+0000",n:"GMT"}}],["America/Dawson_Creek",{s:{f:"-0700",n:"MST"}}],["America/Dawson",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Denver",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Detroit",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Dominica",{s:{f:"-0400",n:"AST"}}],["America/Edmonton",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Eirunepe",{s:{f:"-0500",n:"-05"}}],["America/El_Salvador",{s:{f:"-0600",n:"CST"}}],["America/Fort_Nelson",{s:{f:"-0700",n:"MST"}}],["America/Fortaleza",{s:{f:"-0300",n:"-03"}}],["America/Glace_Bay",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Godthab",{s:{f:"-0200",t:"-0300",n:"-03",s:"19701024T230000",r:{m:10,d:"-1SA"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19700328T220000",r:{m:3,d:"-1SA"}}}],["America/Goose_Bay",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Grand_Turk",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Grenada",{s:{f:"-0400",n:"AST"}}],["America/Guadeloupe",{s:{f:"-0400",n:"AST"}}],["America/Guatemala",{s:{f:"-0600",n:"CST"}}],["America/Guayaquil",{s:{f:"-0500",n:"-05"}}],["America/Guyana",{s:{f:"-0400",n:"-04"}}],["America/Halifax",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Havana",{s:{f:"-0400",t:"-0500",n:"CST",s:"19701101T010000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"CDT",s:"19700308T000000",r:{m:3,d:"2SU"}}}],["America/Hermosillo",{s:{f:"-0700",n:"MST"}}],["America/Indiana/Indianapolis",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Knox",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Marengo",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Petersburg",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Tell_City",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Vevay",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Vincennes",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Winamac",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Inuvik",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Iqaluit",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Jamaica",{s:{f:"-0500",n:"EST"}}],["America/Juneau",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kentucky/Louisville",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kentucky/Monticello",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kralendijk",{s:{f:"-0400",n:"AST"}}],["America/La_Paz",{s:{f:"-0400",n:"-04"}}],["America/Lima",{s:{f:"-0500",n:"-05"}}],["America/Los_Angeles",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Lower_Princes",{s:{f:"-0400",n:"AST"}}],["America/Maceio",{s:{f:"-0300",n:"-03"}}],["America/Managua",{s:{f:"-0600",n:"CST"}}],["America/Manaus",{s:{f:"-0400",n:"-04"}}],["America/Marigot",{s:{f:"-0400",n:"AST"}}],["America/Martinique",{s:{f:"-0400",n:"AST"}}],["America/Matamoros",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Mazatlan",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Menominee",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Merida",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Metlakatla",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Mexico_City",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Miquelon",{s:{f:"-0200",t:"-0300",n:"-03",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Moncton",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Monterrey",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Montevideo",{s:{f:"-0300",n:"-03"}}],["America/Montserrat",{s:{f:"-0400",n:"AST"}}],["America/Nassau",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/New_York",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Nipigon",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Nome",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Noronha",{s:{f:"-0200",n:"-02"}}],["America/North_Dakota/Beulah",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/North_Dakota/Center",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/North_Dakota/New_Salem",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Ojinaga",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Panama",{s:{f:"-0500",n:"EST"}}],["America/Pangnirtung",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Paramaribo",{s:{f:"-0300",n:"-03"}}],["America/Phoenix",{s:{f:"-0700",n:"MST"}}],["America/Port_of_Spain",{s:{f:"-0400",n:"AST"}}],["America/Port-au-Prince",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Porto_Velho",{s:{f:"-0400",n:"-04"}}],["America/Puerto_Rico",{s:{f:"-0400",n:"AST"}}],["America/Punta_Arenas",{s:{f:"-0300",n:"-03"}}],["America/Rainy_River",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Rankin_Inlet",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Recife",{s:{f:"-0300",n:"-03"}}],["America/Regina",{s:{f:"-0600",n:"CST"}}],["America/Resolute",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Rio_Branco",{s:{f:"-0500",n:"-05"}}],["America/Santarem",{s:{f:"-0300",n:"-03"}}],["America/Santiago",{s:{f:"-0300",t:"-0400",n:"-04",s:"19700405T000000",r:{m:4,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19700906T000000",r:{m:9,d:"1SU"}}}],["America/Santo_Domingo",{s:{f:"-0400",n:"AST"}}],["America/Sao_Paulo",{s:{f:"-0300",n:"-03",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Scoresbysund",{s:{f:"+0000",t:"-0100",n:"-01",s:"19701025T010000",r:{m:10,d:"-1SU"}},d:{f:"-0100",t:"+0000",n:"+00",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["America/Sitka",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/St_Barthelemy",{s:{f:"-0400",n:"AST"}}],["America/St_Johns",{s:{f:"-0230",t:"-0330",n:"NST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0330",t:"-0230",n:"NDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/St_Kitts",{s:{f:"-0400",n:"AST"}}],["America/St_Lucia",{s:{f:"-0400",n:"AST"}}],["America/St_Thomas",{s:{f:"-0400",n:"AST"}}],["America/St_Vincent",{s:{f:"-0400",n:"AST"}}],["America/Swift_Current",{s:{f:"-0600",n:"CST"}}],["America/Tegucigalpa",{s:{f:"-0600",n:"CST"}}],["America/Thule",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Thunder_Bay",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Tijuana",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Toronto",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Tortola",{s:{f:"-0400",n:"AST"}}],["America/Vancouver",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Whitehorse",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Winnipeg",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Yakutat",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Yellowknife",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["Antarctica/Casey",{s:{f:"+0800",n:"+08"}}],["Antarctica/Davis",{s:{f:"+0700",n:"+07"}}],["Antarctica/DumontDUrville",{s:{f:"+1000",n:"+10"}}],["Antarctica/Macquarie",{s:{f:"+1100",n:"+11"}}],["Antarctica/Mawson",{s:{f:"+0500",n:"+05"}}],["Antarctica/McMurdo",{s:{f:"+1300",t:"+1200",n:"NZST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1200",t:"+1300",n:"NZDT",s:"19700927T020000",r:{m:9,d:"-1SU"}}}],["Antarctica/Palmer",{s:{f:"-0300",n:"-03"}}],["Antarctica/Rothera",{s:{f:"-0300",n:"-03"}}],["Antarctica/Syowa",{s:{f:"+0300",n:"+03"}}],["Antarctica/Troll",{s:{f:"+0200",t:"+0000",n:"+00",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0200",n:"+02",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Antarctica/Vostok",{s:{f:"+0600",n:"+06"}}],["Arctic/Longyearbyen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Asia/Aden",{s:{f:"+0300",n:"+03"}}],["Asia/Almaty",{s:{f:"+0600",n:"+06"}}],["Asia/Amman",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701030T010000",r:{m:10,d:"-1FR"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700326T235959",r:{m:3,d:"-1TH"}}}],["Asia/Anadyr",{s:{f:"+1200",n:"+12"}}],["Asia/Aqtau",{s:{f:"+0500",n:"+05"}}],["Asia/Aqtobe",{s:{f:"+0500",n:"+05"}}],["Asia/Ashgabat",{s:{f:"+0500",n:"+05"}}],["Asia/Atyrau",{s:{f:"+0500",n:"+05"}}],["Asia/Baghdad",{s:{f:"+0300",n:"+03"}}],["Asia/Bahrain",{s:{f:"+0300",n:"+03"}}],["Asia/Baku",{s:{f:"+0400",n:"+04"}}],["Asia/Bangkok",{s:{f:"+0700",n:"+07"}}],["Asia/Barnaul",{s:{f:"+0700",n:"+07"}}],["Asia/Beirut",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T000000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["Asia/Bishkek",{s:{f:"+0600",n:"+06"}}],["Asia/Brunei",{s:{f:"+0800",n:"+08"}}],["Asia/Chita",{s:{f:"+0900",n:"+09"}}],["Asia/Choibalsan",{s:{f:"+0800",n:"+08"}}],["Asia/Colombo",{s:{f:"+0530",n:"+0530"}}],["Asia/Damascus",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701030T000000",r:{m:10,d:"-1FR"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700327T000000",r:{m:3,d:"-1FR"}}}],["Asia/Dhaka",{s:{f:"+0600",n:"+06"}}],["Asia/Dili",{s:{f:"+0900",n:"+09"}}],["Asia/Dubai",{s:{f:"+0400",n:"+04"}}],["Asia/Dushanbe",{s:{f:"+0500",n:"+05"}}],["Asia/Famagusta",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Asia/Gaza",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701031T010000",r:{m:10,d:"-1SA"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700328T010000",r:{m:3,d:"4SA"}}}],["Asia/Hebron",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701031T010000",r:{m:10,d:"-1SA"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700328T010000",r:{m:3,d:"4SA"}}}],["Asia/Ho_Chi_Minh",{s:{f:"+0700",n:"+07"}}],["Asia/Hong_Kong",{s:{f:"+0800",n:"HKT"}}],["Asia/Hovd",{s:{f:"+0700",n:"+07"}}],["Asia/Irkutsk",{s:{f:"+0800",n:"+08"}}],["Asia/Istanbul",{s:{f:"+0300",n:"+03"}}],["Asia/Jakarta",{s:{f:"+0700",n:"WIB"}}],["Asia/Jayapura",{s:{f:"+0900",n:"WIT"}}],["Asia/Jerusalem",{s:{f:"+0300",t:"+0200",n:"IST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"IDT",s:"19700327T020000",r:{m:3,d:"-1FR"}}}],["Asia/Kabul",{s:{f:"+0430",n:"+0430"}}],["Asia/Kamchatka",{s:{f:"+1200",n:"+12"}}],["Asia/Karachi",{s:{f:"+0500",n:"PKT"}}],["Asia/Kathmandu",{s:{f:"+0545",n:"+0545"}}],["Asia/Khandyga",{s:{f:"+0900",n:"+09"}}],["Asia/Kolkata",{s:{f:"+0530",n:"IST"}}],["Asia/Krasnoyarsk",{s:{f:"+0700",n:"+07"}}],["Asia/Kuala_Lumpur",{s:{f:"+0800",n:"+08"}}],["Asia/Kuching",{s:{f:"+0800",n:"+08"}}],["Asia/Kuwait",{s:{f:"+0300",n:"+03"}}],["Asia/Macau",{s:{f:"+0800",n:"CST"}}],["Asia/Magadan",{s:{f:"+1100",n:"+11"}}],["Asia/Makassar",{s:{f:"+0800",n:"WITA"}}],["Asia/Manila",{s:{f:"+0800",n:"PST"}}],["Asia/Muscat",{s:{f:"+0400",n:"+04"}}],["Asia/Nicosia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Asia/Novokuznetsk",{s:{f:"+0700",n:"+07"}}],["Asia/Novosibirsk",{s:{f:"+0700",n:"+07"}}],["Asia/Omsk",{s:{f:"+0600",n:"+06"}}],["Asia/Oral",{s:{f:"+0500",n:"+05"}}],["Asia/Phnom_Penh",{s:{f:"+0700",n:"+07"}}],["Asia/Pontianak",{s:{f:"+0700",n:"WIB"}}],["Asia/Pyongyang",{s:{f:"+0900",n:"KST"}}],["Asia/Qatar",{s:{f:"+0300",n:"+03"}}],["Asia/Qyzylorda",{s:{f:"+0600",n:"+06"}}],["Asia/Riyadh",{s:{f:"+0300",n:"+03"}}],["Asia/Sakhalin",{s:{f:"+1100",n:"+11"}}],["Asia/Samarkand",{s:{f:"+0500",n:"+05"}}],["Asia/Seoul",{s:{f:"+0900",n:"KST"}}],["Asia/Shanghai",{s:{f:"+0800",n:"CST"}}],["Asia/Singapore",{s:{f:"+0800",n:"+08"}}],["Asia/Srednekolymsk",{s:{f:"+1100",n:"+11"}}],["Asia/Taipei",{s:{f:"+0800",n:"CST"}}],["Asia/Tashkent",{s:{f:"+0500",n:"+05"}}],["Asia/Tbilisi",{s:{f:"+0400",n:"+04"}}],["Asia/Tehran",{s:{f:"+0430",t:"+0330",n:"+0330",s:"19700921T000000",r:{m:9,d:"3SU"}},d:{f:"+0330",t:"+0430",n:"+0430",s:"19700321T000000",r:{m:3,d:"3SU"}}}],["Asia/Thimphu",{s:{f:"+0600",n:"+06"}}],["Asia/Tokyo",{s:{f:"+0900",n:"JST"}}],["Asia/Tomsk",{s:{f:"+0700",n:"+07"}}],["Asia/Ulaanbaatar",{s:{f:"+0800",n:"+08"}}],["Asia/Urumqi",{s:{f:"+0600",n:"+06"}}],["Asia/Ust-Nera",{s:{f:"+1000",n:"+10"}}],["Asia/Vientiane",{s:{f:"+0700",n:"+07"}}],["Asia/Vladivostok",{s:{f:"+1000",n:"+10"}}],["Asia/Yakutsk",{s:{f:"+0900",n:"+09"}}],["Asia/Yangon",{s:{f:"+0630",n:"+0630"}}],["Asia/Yekaterinburg",{s:{f:"+0500",n:"+05"}}],["Asia/Yerevan",{s:{f:"+0400",n:"+04"}}],["Atlantic/Azores",{s:{f:"+0000",t:"-0100",n:"-01",s:"19701025T010000",r:{m:10,d:"-1SU"}},d:{f:"-0100",t:"+0000",n:"+00",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["Atlantic/Bermuda",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["Atlantic/Canary",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Cape_Verde",{s:{f:"-0100",n:"-01"}}],["Atlantic/Faroe",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Madeira",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Reykjavik",{s:{f:"+0000",n:"GMT"}}],["Atlantic/South_Georgia",{s:{f:"-0200",n:"-02"}}],["Atlantic/St_Helena",{s:{f:"+0000",n:"GMT"}}],["Atlantic/Stanley",{s:{f:"-0300",n:"-03"}}],["Australia/Adelaide",{s:{f:"+1030",t:"+0930",n:"ACST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+0930",t:"+1030",n:"ACDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Brisbane",{s:{f:"+1000",n:"AEST"}}],["Australia/Broken_Hill",{s:{f:"+1030",t:"+0930",n:"ACST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+0930",t:"+1030",n:"ACDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Currie",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Darwin",{s:{f:"+0930",n:"ACST"}}],["Australia/Eucla",{s:{f:"+0845",n:"+0845"}}],["Australia/Hobart",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Lindeman",{s:{f:"+1000",n:"AEST"}}],["Australia/Lord_Howe",{s:{f:"+1100",t:"+1030",n:"+1030",s:"19700405T020000",r:{m:4,d:"1SU"}},d:{f:"+1030",t:"+1100",n:"+11",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Melbourne",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Perth",{s:{f:"+0800",n:"AWST"}}],["Australia/Sydney",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Etc/GMT-0",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT-1",{s:{f:"-0100",n:"-01"}}],["Etc/GMT-10",{s:{f:"-1000",n:"-10"}}],["Etc/GMT-11",{s:{f:"-1100",n:"-11"}}],["Etc/GMT-12",{s:{f:"-1200",n:"-12"}}],["Etc/GMT-2",{s:{f:"-0200",n:"-02"}}],["Etc/GMT-3",{s:{f:"-0300",n:"-03"}}],["Etc/GMT-4",{s:{f:"-0400",n:"-04"}}],["Etc/GMT-5",{s:{f:"-0500",n:"-05"}}],["Etc/GMT-6",{s:{f:"-0600",n:"-06"}}],["Etc/GMT-7",{s:{f:"-0700",n:"-07"}}],["Etc/GMT-8",{s:{f:"-0800",n:"-08"}}],["Etc/GMT-9",{s:{f:"-0900",n:"-09"}}],["Etc/GMT",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT+0",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT+1",{s:{f:"+0100",n:"+01"}}],["Etc/GMT+10",{s:{f:"+1000",n:"+10"}}],["Etc/GMT+11",{s:{f:"+1100",n:"+11"}}],["Etc/GMT+12",{s:{f:"+1200",n:"+12"}}],["Etc/GMT+13",{s:{f:"+1300",n:"+13"}}],["Etc/GMT+14",{s:{f:"+1400",n:"+14"}}],["Etc/GMT+2",{s:{f:"+0200",n:"+02"}}],["Etc/GMT+3",{s:{f:"+0300",n:"+03"}}],["Etc/GMT+4",{s:{f:"+0400",n:"+04"}}],["Etc/GMT+5",{s:{f:"+0500",n:"+05"}}],["Etc/GMT+6",{s:{f:"+0600",n:"+06"}}],["Etc/GMT+7",{s:{f:"+0700",n:"+07"}}],["Etc/GMT+8",{s:{f:"+0800",n:"+08"}}],["Etc/GMT+9",{s:{f:"+0900",n:"+09"}}],["Etc/GMT0",{s:{f:"+0000",n:"GMT"}}],["Etc/Greenwich",{s:{f:"+0000",n:"GMT"}}],["Etc/UCT",{s:{f:"+0000",n:"UCT"}}],["Etc/Universal",{s:{f:"+0000",n:"UTC"}}],["Etc/UTC",{s:{f:"+0000",n:"UTC"}}],["Etc/Zulu",{s:{f:"+0000",n:"UTC"}}],["Europe/Amsterdam",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Andorra",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Astrakhan",{s:{f:"+0400",n:"+04"}}],["Europe/Athens",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Belgrade",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Berlin",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Bratislava",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Brussels",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Bucharest",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Budapest",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Busingen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Chisinau",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Copenhagen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Dublin",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"IST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Gibraltar",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Guernsey",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Helsinki",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Isle_of_Man",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Istanbul",{s:{f:"+0300",n:"+03"}}],["Europe/Jersey",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Kaliningrad",{s:{f:"+0200",n:"EET"}}],["Europe/Kiev",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Kirov",{s:{f:"+0300",n:"+03"}}],["Europe/Lisbon",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Ljubljana",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/London",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Luxembourg",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Madrid",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Malta",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Mariehamn",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Minsk",{s:{f:"+0300",n:"+03"}}],["Europe/Monaco",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Moscow",{s:{f:"+0300",n:"MSK"}}],["Europe/Nicosia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Oslo",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Paris",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Podgorica",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Prague",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Riga",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Rome",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Samara",{s:{f:"+0400",n:"+04"}}],["Europe/San_Marino",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Sarajevo",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Saratov",{s:{f:"+0400",n:"+04"}}],["Europe/Simferopol",{s:{f:"+0300",n:"MSK"}}],["Europe/Skopje",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Sofia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Stockholm",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Tallinn",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Tirane",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Ulyanovsk",{s:{f:"+0400",n:"+04"}}],["Europe/Uzhgorod",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Vaduz",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vatican",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vienna",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vilnius",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Volgograd",{s:{f:"+0400",n:"+04"}}],["Europe/Warsaw",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Zagreb",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Zaporozhye",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Zurich",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Indian/Antananarivo",{s:{f:"+0300",n:"EAT"}}],["Indian/Chagos",{s:{f:"+0600",n:"+06"}}],["Indian/Christmas",{s:{f:"+0700",n:"+07"}}],["Indian/Cocos",{s:{f:"+0630",n:"+0630"}}],["Indian/Comoro",{s:{f:"+0300",n:"EAT"}}],["Indian/Kerguelen",{s:{f:"+0500",n:"+05"}}],["Indian/Mahe",{s:{f:"+0400",n:"+04"}}],["Indian/Maldives",{s:{f:"+0500",n:"+05"}}],["Indian/Mauritius",{s:{f:"+0400",n:"+04"}}],["Indian/Mayotte",{s:{f:"+0300",n:"EAT"}}],["Indian/Reunion",{s:{f:"+0400",n:"+04"}}],["Pacific/Apia",{s:{f:"+1400",t:"+1300",n:"+13",s:"19700405T040000",r:{m:4,d:"1SU"}},d:{f:"+1300",t:"+1400",n:"+14",s:"19700927T030000",r:{m:9,d:"-1SU"}}}],["Pacific/Auckland",{s:{f:"+1300",t:"+1200",n:"NZST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1200",t:"+1300",n:"NZDT",s:"19700927T020000",r:{m:9,d:"-1SU"}}}],["Pacific/Bougainville",{s:{f:"+1100",n:"+11"}}],["Pacific/Chatham",{s:{f:"+1345",t:"+1245",n:"+1245",s:"19700405T034500",r:{m:4,d:"1SU"}},d:{f:"+1245",t:"+1345",n:"+1345",s:"19700927T024500",r:{m:9,d:"-1SU"}}}],["Pacific/Chuuk",{s:{f:"+1000",n:"+10"}}],["Pacific/Easter",{s:{f:"-0500",t:"-0600",n:"-06",s:"19700404T220000",r:{m:4,d:"1SA"}},d:{f:"-0600",t:"-0500",n:"-05",s:"19700905T220000",r:{m:9,d:"1SA"}}}],["Pacific/Efate",{s:{f:"+1100",n:"+11"}}],["Pacific/Enderbury",{s:{f:"+1300",n:"+13"}}],["Pacific/Fakaofo",{s:{f:"+1300",n:"+13"}}],["Pacific/Fiji",{s:{f:"+1300",t:"+1200",n:"+12",s:"19700118T030000",r:{m:1,d:"-2SU"}},d:{f:"+1200",t:"+1300",n:"+13",s:"19701101T020000",r:{m:11,d:"1SU"}}}],["Pacific/Funafuti",{s:{f:"+1200",n:"+12"}}],["Pacific/Galapagos",{s:{f:"-0600",n:"-06"}}],["Pacific/Gambier",{s:{f:"-0900",n:"-09"}}],["Pacific/Guadalcanal",{s:{f:"+1100",n:"+11"}}],["Pacific/Guam",{s:{f:"+1000",n:"ChST"}}],["Pacific/Honolulu",{s:{f:"-1000",n:"HST"}}],["Pacific/Kiritimati",{s:{f:"+1400",n:"+14"}}],["Pacific/Kosrae",{s:{f:"+1100",n:"+11"}}],["Pacific/Kwajalein",{s:{f:"+1200",n:"+12"}}],["Pacific/Majuro",{s:{f:"+1200",n:"+12"}}],["Pacific/Marquesas",{s:{f:"-0930",n:"-0930"}}],["Pacific/Midway",{s:{f:"-1100",n:"SST"}}],["Pacific/Nauru",{s:{f:"+1200",n:"+12"}}],["Pacific/Niue",{s:{f:"-1100",n:"-11"}}],["Pacific/Norfolk",{s:{f:"+1100",n:"+11"}}],["Pacific/Noumea",{s:{f:"+1100",n:"+11"}}],["Pacific/Pago_Pago",{s:{f:"-1100",n:"SST"}}],["Pacific/Palau",{s:{f:"+0900",n:"+09"}}],["Pacific/Pitcairn",{s:{f:"-0800",n:"-08"}}],["Pacific/Pohnpei",{s:{f:"+1100",n:"+11"}}],["Pacific/Port_Moresby",{s:{f:"+1000",n:"+10"}}],["Pacific/Rarotonga",{s:{f:"-1000",n:"-10"}}],["Pacific/Saipan",{s:{f:"+1000",n:"ChST"}}],["Pacific/Tahiti",{s:{f:"-1000",n:"-10"}}],["Pacific/Tarawa",{s:{f:"+1200",n:"+12"}}],["Pacific/Tongatapu",{s:{f:"+1300",n:"+13"}}],["Pacific/Wake",{s:{f:"+1200",n:"+12"}}],["Pacific/Wallis",{s:{f:"+1200",n:"+12"}}]])},30980(t,e,n){var r=n(39344),a=n(94033);function i(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}i.prototype=r(a.prototype),i.prototype.constructor=i,t.exports=i},56017(t,e,n){var r=n(39344),a=n(94033);function i(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}i.prototype=r(a.prototype),i.prototype.constructor=i,t.exports=i},83729(t){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length;++n0&&i(c)?n>1?t(c,n-1,i,s,o):r(o,c):s||(o[o.length]=c)}return o}},47422(t,e,n){var r=n(31769),a=n(77797);t.exports=function(t,e){for(var n=0,i=(e=r(e,t)).length;null!=t&&n1&&U.reverse(),S&&T1?"& ":"")+n[a],n=n.join(r>2?", ":" "),t.replace(e,"{\n/* [wrapped with "+n+"] */\n")}},45891(t,e,n){var r=n(51873),a=n(72428),i=n(56449),s=r?r.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||a(t)||!!(s&&t&&t[s])}},28586(t,e,n){var r=n(56449),a=n(44394),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,s=/^\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!a(t))||s.test(t)||!i.test(t)||null!=e&&t in Object(e)}},85087(t,e,n){var r=n(30980),a=n(37381),i=n(62284),s=n(53758);t.exports=function(t){var e=i(t),n=s[e];if("function"!=typeof n||!(e in r.prototype))return!1;if(t===n)return!0;var o=a(n);return!!o&&t===o[0]}},30756(t,e,n){var r=n(23805);t.exports=function(t){return t==t&&!r(t)}},67197(t){t.exports=function(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in Object(n))}}},62224(t,e,n){var r=n(50104);t.exports=function(t){var e=r(t,function(t){return 500===n.size&&n.clear(),t}),n=e.cache;return e}},3209(t,e,n){var r=n(91596),a=n(53320),i=n(36306),s="__lodash_placeholder__",o=Math.min;t.exports=function(t,e){var n=t[1],l=e[1],d=n|l,c=d<131,u=128==l&&8==n||128==l&&256==n&&t[7].length<=e[8]||384==l&&e[7].length<=e[8]&&8==n;if(!c&&!u)return t;1&l&&(t[2]=e[2],d|=1&n?0:4);var h=e[3];if(h){var f=t[3];t[3]=f?r(f,h,e[4]):h,t[4]=f?i(t[3],s):e[4]}return(h=e[5])&&(f=t[5],t[5]=f?a(f,h,e[6]):h,t[6]=f?i(t[5],s):e[6]),(h=e[7])&&(t[7]=h),128&l&&(t[8]=null==t[8]?e[8]:o(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=d,t}},48152(t,e,n){var r=n(28303),a=r&&new r;t.exports=a},84629(t){t.exports={}},68294(t,e,n){var r=n(23007),a=n(30361),i=Math.min;t.exports=function(t,e){for(var n=t.length,s=i(e.length,n),o=r(t);s--;){var l=e[s];t[s]=a(l,n)?o[l]:void 0}return t}},36306(t){var e="__lodash_placeholder__";t.exports=function(t,n){for(var r=-1,a=t.length,i=0,s=[];++r2?e-2:1,r&&r<=e?n:s(n,e)):n}},mixin:function(t){return function(e){var n=this;if(!Y(n))return t(n,Object(e));var r=[];return U(M(e),function(t){Y(e[t])&&r.push([t,n.prototype[t]])}),t(n,Object(e)),U(r,function(t){var e=t[1];Y(e)?n.prototype[t[0]]=e:delete n.prototype[t[0]]}),n}},nthArg:function(t){return function(e){var n=e<0?1:k(e)+1;return x(t(e),n)}},rearg:function(t){return function(e,n){var r=n?n.length:0;return x(t(e,n),r)}},runInContext:function(n){return function(r){return t(e,n(r),c)}}};function z(t,e,n){if(p&&(S||!r.skipFixed[t])){var a=r.methodSpread[t],s=a&&a.start;return void 0===s?b(e,n):function(t,e){return function(){for(var n=arguments.length,r=n-1,a=Array(n);n--;)a[n]=arguments[n];var s=a[e],o=a.slice(0,e);return s&&i.apply(o,s),e!=r&&i.apply(o,a.slice(e+1)),t.apply(this,o)}}(e,s)}return e}function L(t,e,n){return y&&n>1&&(v||!r.skipRearg[t])?I(e,r.methodRearg[t]||r.aryRearg[n]):e}function W(t,e){for(var n=-1,r=(e=N(e)).length,a=r-1,i=D(Object(t)),s=i;null!=s&&++n1?x(e,n):e}(0,a=function(t,e){if(f){var n=r.iterateeRearg[t];if(n)return function(t,e){return F(t,function(t){var n=e.length;return function(t,e){return 2==e?function(e,n){return t.apply(void 0,arguments)}:function(e){return t.apply(void 0,arguments)}}(I(s(t,n),e),n)})}(e,n);var a=!u&&r.iterateeAry[t];if(a)return function(t,e){return F(t,function(t){return"function"==typeof t?s(t,e):t})}(e,a)}return e}(i,a),t),!1}}),!a}),a||(a=d),a==e&&(a=g?x(a,1):function(){return e.apply(this,arguments)}),a.convert=R(i,e),a.placeholder=e.placeholder=n,a}if(!h)return V(n,d,T);var H=d,K=[];return U(P,function(t){U(r.aryMethod[t],function(t){var e=H[r.remap[t]||t];e&&K.push([t,V(t,e,H)])})}),U(M(H),function(t){var e=H[t];if("function"==typeof e){for(var n=K.length;n--;)if(K[n][0]==t)return;e.convert=R(t,e),K.push([t,e])}}),U(K,function(t){H[t[0]]=t[1]}),H.convert=function(t){return H.runInContext.convert(t)(void 0)},H.placeholder=H,U(M(H),function(t){U(r.realToAlias[t]||[],function(e){H[e]=H[t]})}),H}},16962(t,e){e.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},e.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},e.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},e.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},e.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},e.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},e.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},e.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},e.realToAlias=function(){var t=Object.prototype.hasOwnProperty,n=e.aliasToReal,r={};for(var a in n){var i=n[a];t.call(r,i)?r[i].push(a):r[i]=[a]}return r}(),e.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},e.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},e.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},47934(t,e,n){t.exports={ary:n(64626),assign:n(74733),clone:n(32629),curry:n(49747),forEach:n(83729),isArray:n(56449),isError:n(23546),isFunction:n(1882),isWeakMap:n(47886),iteratee:n(33855),keys:n(88984),rearg:n(84195),toInteger:n(61489),toPath:n(42072)}},79920(t,e,n){var r=n(73424),a=n(47934);t.exports=function(t,e,n){return r(a,t,e,n)}},33455(t,e,n){var r=n(79920)("memoize",n(50104));r.placeholder=n(2874),t.exports=r},2874(t){t.exports={}},58156(t,e,n){var r=n(47422);t.exports=function(t,e,n){var a=null==t?void 0:r(t,e);return void 0===a?n:a}},80631(t,e,n){var r=n(28077),a=n(49326);t.exports=function(t,e){return null!=t&&a(t,e,r)}},23546(t,e,n){var r=n(72552),a=n(40346),i=n(11331);t.exports=function(t){if(!a(t))return!1;var e=r(t);return"[object Error]"==e||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!i(t)}},87730(t,e,n){var r=n(29172),a=n(27301),i=n(86009),s=i&&i.isMap,o=s?a(s):r;t.exports=o},38440(t,e,n){var r=n(16038),a=n(27301),i=n(86009),s=i&&i.isSet,o=s?a(s):r;t.exports=o},47886(t,e,n){var r=n(5861),a=n(40346);t.exports=function(t){return a(t)&&"[object WeakMap]"==r(t)}},33855(t,e,n){var r=n(9999),a=n(15389);t.exports=function(t){return a("function"==typeof t?t:r(t,1))}},50104(t,e,n){var r=n(53661);function a(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var r=arguments,a=e?e.apply(this,r):r[0],i=n.cache;if(i.has(a))return i.get(a);var s=t.apply(this,r);return n.cache=i.set(a,s)||i,s};return n.cache=new(a.Cache||r),n}a.Cache=r,t.exports=a},50583(t,e,n){var r=n(47237),a=n(17255),i=n(28586),s=n(77797);t.exports=function(t){return i(t)?r(s(t)):a(t)}},84195(t,e,n){var r=n(66977),a=n(38816)(function(t,e){return r(t,256,void 0,void 0,void 0,e)});t.exports=a},17400(t,e,n){var r=n(99374),a=1/0;t.exports=function(t){return t?(t=r(t))===a||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},61489(t,e,n){var r=n(17400);t.exports=function(t){var e=r(t),n=e%1;return e==e?n?e-n:e:0}},42072(t,e,n){var r=n(34932),a=n(23007),i=n(56449),s=n(44394),o=n(61802),l=n(77797),d=n(13222);t.exports=function(t){return i(t)?r(t,l):s(t)?[t]:a(o(d(t)))}},13222(t,e,n){var r=n(77556);t.exports=function(t){return null==t?"":r(t)}},53758(t,e,n){var r=n(30980),a=n(56017),i=n(94033),s=n(56449),o=n(40346),l=n(80257),d=Object.prototype.hasOwnProperty;function c(t){if(o(t)&&!s(t)&&!(t instanceof r)){if(t instanceof a)return t;if(d.call(t,"__wrapped__"))return l(t)}return new a(t)}c.prototype=i.prototype,c.prototype.constructor=c,t.exports=c},42634(){},63779(){},77199(){},59169(){},86833(){}},a={};function i(t){var e=a[t];if(void 0!==e)return e.exports;var n=a[t]={id:t,loaded:!1,exports:{}};return r[t].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=r,t=[],i.O=(e,n,r,a)=>{if(!n){var s=1/0;for(c=0;c=a)&&Object.keys(i.O).every(t=>i.O[t](n[l]))?n.splice(l--,1):(o=!1,a0&&t[c-1][2]>a;c--)t[c]=t[c-1];t[c]=[n,r,a]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce((e,n)=>(i.f[n](t,e),e),[])),i.u=t=>t+"-"+t+".js?v="+{1217:"1b1016b8e8417d8b50ab",1604:"6dd81d059d91ea002066",3464:"03f0e4a610987ac78bb3",6505:"903528d99b4acedb993d",6597:"73d39530ac866a7119c9",7859:"f9477f7bca078c643063",9054:"3025fae957c5f3990fea"}[t],i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),e={},n="nextcloud:",i.l=(t,r,a,s)=>{if(e[t])e[t].push(r);else{var o,l;if(void 0!==a)for(var d=document.getElementsByTagName("script"),c=0;c{o.onerror=o.onload=null,clearTimeout(f);var a=e[t];if(delete e[t],o.parentNode&&o.parentNode.removeChild(o),a&&a.forEach(t=>t(r)),n)return n(r)},f=setTimeout(h.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=h.bind(null,o.onerror),o.onload=h.bind(null,o.onload),l&&document.head.appendChild(o)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=3705,i.dn=t=>{(Object.getOwnPropertyDescriptor(t,"name")||{}).writable||Object.defineProperty(t,"name",{value:"default",configurable:!0})},(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!t||!/^http(s?):/.test(t));)t=n[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={3705:0};i.f.j=(e,n)=>{var r=i.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var a=new Promise((n,a)=>r=t[e]=[n,a]);n.push(r[2]=a);var s=i.p+i.u(e),o=new Error;i.l(s,n=>{if(i.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var a=n&&("load"===n.type?"missing":n.type),s=n&&n.target&&n.target.src;o.message="Loading chunk "+e+" failed.\n("+a+": "+s+")",o.name="ChunkLoadError",o.type=a,o.request=s,r[1](o)}},"chunk-"+e,e)}},i.O.j=e=>0===t[e];var e=(e,n)=>{var r,a,[s,o,l]=n,d=0;if(s.some(e=>0!==t[e])){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(l)var c=l(i)}for(e&&e(n);di(95759));s=i.O(s)})(); -//# sourceMappingURL=dav-settings-personal-availability.js.map?v=fc09559f4663ac3748b8 \ No newline at end of file +(()=>{var t,e,n,r={30748(t,e,n){"use strict";var r=n(85471),a=n(53334),i=n(88837),s=n(21777),o=n(85168),l=n(81222),d=n(63814),c=n(40715);function u(t){return`${t.getFullYear()}-${(t.getMonth()+1).toString().padStart(2,"0")}-${t.getDate().toString().padStart(2,"0")}`}var h=n(44368),f=n(17334),m=n.n(f),p=n(35947);const A=(0,p.YK)().setApp("dav").detectUser().build();var y=n(74095),T=n(82182),g=n(177),S=n(67607),v=n(48198);function _(t){const e=60*t.getTimezoneOffset()*1e3;return new Date(t.getTime()+e)}const E={name:"AbsenceForm",components:{NcButton:y.A,NcTextField:T.A,NcTextArea:g.A,NcDateTimePickerNative:v.A,NcSelect:S.default},data(){const{firstDay:t,lastDay:e,status:n,message:r,replacementUserId:a,replacementUserDisplayName:i}=(0,l.C)("dav","absence",{});return{loading:!1,status:n??"",message:r??"",firstDay:_(t?new Date(t):new Date),lastDay:e?_(new Date(e)):null,replacementUserId:a,replacementUser:a?{user:a,displayName:i}:null,searchLoading:!1,options:[]}},computed:{valid(){const t=new Date(this.firstDay?.getTime()),e=new Date(this.lastDay?.getTime());return t?.setHours(0,0,0,0),e?.setHours(0,0,0,0),!!this.firstDay&&!!this.lastDay&&!!this.status&&!!this.message&&e>=t}},methods:{resetForm(){this.status="",this.message="",this.firstDay=new Date,this.lastDay=null},formatForMultiselect:t=>({user:t.uuid||t.value.shareWith,displayName:t.name||t.label,subtitle:""|t.dsc}),async asyncFind(t){this.searchLoading=!0,await this.debounceGetSuggestions(t.trim())},async getSuggestions(t){const e=[c.I.User];let n=null;try{n=await h.Ay.get((0,d.KT)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"file",search:t,shareType:e}})}catch(t){return void console.error("Error fetching suggestions",t)}const r=n.data.ocs.data,a=n.data.ocs.data.exact;r.exact=[];const i=a.users,s=r.users;console.info("rawExactSuggestions",i),console.info("rawSuggestions",s);const o=i.map(t=>this.formatForMultiselect(t)),l=s.map(t=>this.formatForMultiselect(t)),u=o.concat(l),f=u.reduce((t,e)=>e.displayName?(t[e.displayName]||(t[e.displayName]=0),t[e.displayName]++,t):t,{});this.options=u.map(t=>f[t.displayName]>1&&!t.desc?{...t,desc:t.shareWithDisplayNameUnique}:t),this.searchLoading=!1,console.info("suggestions",this.options)},debounceGetSuggestions:m()(function(...t){this.getSuggestions(...t)},300),async saveForm(){if(this.valid){this.loading=!0;try{await h.Ay.post((0,d.KT)("/apps/dav/api/v1/outOfOffice/{userId}",{userId:(0,s.HW)().uid}),{firstDay:u(this.firstDay),lastDay:u(this.lastDay),status:this.status,message:this.message,replacementUserId:this.replacementUser?.user??null}),(0,o.Te)(this.$t("dav","Absence saved"))}catch(t){(0,o.Qg)(this.$t("dav","Failed to save your absence settings")),A.error("Could not save absence",{error:t})}finally{this.loading=!1}}},async clearAbsence(){this.loading=!0;try{await h.Ay.delete((0,d.KT)("/apps/dav/api/v1/outOfOffice/{userId}",{userId:(0,s.HW)().uid})),this.resetForm(),(0,o.Te)(this.$t("dav","Absence cleared"))}catch(t){(0,o.Qg)(this.$t("dav","Failed to clear your absence settings")),A.error("Could not clear absence",{error:t})}finally{this.loading=!1}}}};var b=n(85072),C=n.n(b),D=n(97825),x=n.n(D),U=n(77659),w=n.n(U),O=n(55056),Y=n.n(O),B=n(10540),M=n.n(B),I=n(41113),k=n.n(I),N=n(85531),P={};P.styleTagTransform=k(),P.setAttributes=Y(),P.insert=w().bind(null,"head"),P.domAPI=x(),P.insertStyleElement=M(),C()(N.A,P),N.A&&N.A.locals&&N.A.locals;var j=n(14486),z=(0,j.A)(E,function(){var t=this,e=t._self._c;return e("form",{staticClass:"absence",on:{submit:function(e){return e.preventDefault(),t.saveForm.apply(null,arguments)}}},[e("div",{staticClass:"absence__dates"},[e("NcDateTimePickerNative",{staticClass:"absence__dates__picker",attrs:{id:"absence-first-day",label:t.$t("dav","First day"),required:!0},model:{value:t.firstDay,callback:function(e){t.firstDay=e},expression:"firstDay"}}),t._v(" "),e("NcDateTimePickerNative",{staticClass:"absence__dates__picker",attrs:{id:"absence-last-day",label:t.$t("dav","Last day (inclusive)"),required:!0},model:{value:t.lastDay,callback:function(e){t.lastDay=e},expression:"lastDay"}})],1),t._v(" "),e("label",{attrs:{for:"replacement-search-input"}},[t._v(t._s(t.$t("dav","Out of office replacement (optional)")))]),t._v(" "),e("NcSelect",{ref:"select",attrs:{"input-id":"replacement-search-input",loading:t.searchLoading,placeholder:t.$t("dav","Name of the replacement"),"clear-search-on-blur":()=>!1,"user-select":!0,options:t.options},on:{search:t.asyncFind},scopedSlots:t._u([{key:"no-options",fn:function({search:e}){return[t._v("\n\t\t\t"+t._s(e?t.$t("dav","No results."):t.$t("dav","Start typing."))+"\n\t\t")]}}]),model:{value:t.replacementUser,callback:function(e){t.replacementUser=e},expression:"replacementUser"}}),t._v(" "),e("NcTextField",{attrs:{value:t.status,label:t.$t("dav","Short absence status"),required:!0},on:{"update:value":function(e){t.status=e}}}),t._v(" "),e("NcTextArea",{attrs:{value:t.message,label:t.$t("dav","Long absence Message"),required:!0},on:{"update:value":function(e){t.message=e}}}),t._v(" "),e("div",{staticClass:"absence__buttons"},[e("NcButton",{attrs:{disabled:t.loading||!t.valid,type:"primary","native-type":"submit"}},[t._v("\n\t\t\t"+t._s(t.$t("dav","Save"))+"\n\t\t")]),t._v(" "),e("NcButton",{attrs:{disabled:t.loading||!t.valid,type:"error"},on:{click:t.clearAbsence}},[t._v("\n\t\t\t"+t._s(t.$t("dav","Disable absence"))+"\n\t\t")])],1)],1)},[],!1,null,"a9995350",null);const L=z.exports;var W=n(12795),R={};R.styleTagTransform=k(),R.setAttributes=Y(),R.insert=w().bind(null,"head"),R.domAPI=x(),R.insertStyleElement=M(),C()(W.A,R),W.A&&W.A.locals&&W.A.locals;var F=n(80218),V=n(15553),H=n(46447);class K{static fromString(t){return new K(t)}constructor(t){this.value=t}icaltype="binary";decodeValue(){return this._b64_decode(this.value)}setEncodedValue(t){this.value=this._b64_encode(t)}_b64_encode(t){let e,n,r,a,i,s,o,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c=0,u=0,h="",f=[];if(!t)return t;do{e=t.charCodeAt(c++),n=t.charCodeAt(c++),r=t.charCodeAt(c++),l=e<<16|n<<8|r,a=l>>18&63,i=l>>12&63,s=l>>6&63,o=63&l,f[u++]=d.charAt(a)+d.charAt(i)+d.charAt(s)+d.charAt(o)}while(c>16&255,n=l>>8&255,r=255&l,f[u++]=64==s?String.fromCharCode(e):64==o?String.fromCharCode(e,n):String.fromCharCode(e,n,r)}while(cn)-(e0?-1:0}toString(){return this.start+"/"+(this.end||this.duration)}toJSON(){return[this.start.toString(),(this.end||this.duration).toString()]}toICALString(){return this.start.toICALString()+"/"+(this.end||this.duration).toICALString()}}class Q{static _dowCache={};static _wnCache={};static daysInMonth(t,e){let n=30;return t<1||t>12||(n=[0,31,28,31,30,31,30,31,31,30,31,30,31][t],2==t&&(n+=Q.isLeapYear(e))),n}static isLeapYear(t){return t<=1752?t%4==0:t%4==0&&t%100!=0||t%400==0}static fromDayOfYear(t,e){let n=e,r=t,a=new Q;a.auto_normalize=!1;let i=Q.isLeapYear(n)?1:0;if(r<1)return n--,i=Q.isLeapYear(n)?1:0,r+=Q.daysInYearPassedMonth[i][12],Q.fromDayOfYear(r,n);if(r>Q.daysInYearPassedMonth[i][12])return i=Q.isLeapYear(n)?1:0,r-=Q.daysInYearPassedMonth[i][12],n++,Q.fromDayOfYear(r,n);a.year=n,a.isDate=!0;for(let t=11;t>=0;t--)if(r>Q.daysInYearPassedMonth[i][t]){a.month=t+1,a.day=r-Q.daysInYearPassedMonth[i][t];break}return a.auto_normalize=!0,a}static fromStringv2(t){return new Q({year:parseInt(t.slice(0,4),10),month:parseInt(t.slice(5,7),10),day:parseInt(t.slice(8,10),10),isDate:!0})}static fromDateString(t){return new Q({year:dt(t.slice(0,4)),month:dt(t.slice(5,7)),day:dt(t.slice(8,10)),isDate:!0})}static fromDateTimeString(t,e){if(t.length<19)throw new Error('invalid date-time value: "'+t+'"');let n,r;"Z"===t.slice(-1)?n=it.utcTimezone:e&&(r=e.getParameter("tzid"),e.parent&&("standard"===e.parent.name||"daylight"===e.parent.name?n=it.localTimezone:r&&(n=e.parent.getTimeZoneByID(r))));const a={year:dt(t.slice(0,4)),month:dt(t.slice(5,7)),day:dt(t.slice(8,10)),hour:dt(t.slice(11,13)),minute:dt(t.slice(14,16)),second:dt(t.slice(17,19))};return r&&!n&&(a.timezone=r),new Q(a,n)}static fromString(t,e){return t.length>10?Q.fromDateTimeString(t,e):Q.fromDateString(t)}static fromJSDate(t,e){return(new Q).fromJSDate(t,e)}static fromData=function(t,e){return(new Q).fromData(t,e)};static now(){return Q.fromJSDate(new Date,!1)}static weekOneStarts(t,e){let n=Q.fromData({year:t,month:1,day:1,isDate:!0}),r=n.dayOfWeek(),a=e||Q.DEFAULT_WEEK_START;return r>Q.THURSDAY&&(n.day+=7),a>Q.THURSDAY&&(n.day-=7),n.day-=r-a,n}static getDominicalLetter(t){let e="GFEDCBA",n=(t+(t/4|0)+(t/400|0)-(t/100|0)-1)%7;return Q.isLeapYear(t)?e[(n+6)%7]+e[n]:e[n]}static#t=null;static get epochTime(){return this.#t||(this.#t=Q.fromData({year:1970,month:1,day:1,hour:0,minute:0,second:0,isDate:!1,timezone:"Z"})),this.#t}static _cmp_attr(t,e,n){return t[n]>e[n]?1:t[n]=0){s.day=1,0!=a&&a--,i=s.day;let e=t-s.dayOfWeek();e<0&&(e+=7),i+=e,i-=t,n=t}else s.day=r,a++,n=s.dayOfWeek()-t,n<0&&(n+=7),n=r-n;return n+=7*a,i+n}isNthWeekDay(t,e){let n=this.dayOfWeek();return 0===e&&n===t||this.nthWeekDay(t,e)===this.day}weekNumber(t){let e,n=(this.year<<12)+(this.month<<8)+(this.day<<3)+t;if(n in Q._wnCache)return Q._wnCache[n];let r=this.clone();r.isDate=!0;let a=this.year;12==r.month&&r.day>25?(e=Q.weekOneStarts(a+1,t),r.compare(e)<0?e=Q.weekOneStarts(a,t):a++):(e=Q.weekOneStarts(a,t),r.compare(e)<0&&(e=Q.weekOneStarts(--a,t)));let i=At(r.subtractDate(e).toSeconds()/86400/7)+1;return Q._wnCache[n]=i,i}addDuration(t){let e=t.isNegative?-1:1,n=this.second,r=this.minute,a=this.hour,i=this.day;n+=e*t.seconds,r+=e*t.minutes,a+=e*t.hours,i+=e*t.days,i+=7*e*t.weeks,this.second=n,this.minute=r,this.hour=a,this.day=i,this._cachedUnixTime=null}subtractDate(t){let e=this.toUnixTime()+this.utcOffset(),n=t.toUnixTime()+t.utcOffset();return $.fromSeconds(e-n)}subtractDateTz(t){let e=this.toUnixTime(),n=t.toUnixTime();return $.fromSeconds(e-n)}compare(t){if(t instanceof J)return-1*t.compare(this);{let e=this.toUnixTime(),n=t.toUnixTime();return e>n?1:n>e?-1:0}}compareDateOnlyTz(t,e){let n=this.convertToZone(e),r=t.convertToZone(e),a=0;return 0!=(a=Q._cmp_attr(n,r,"year"))||0!=(a=Q._cmp_attr(n,r,"month"))||(a=Q._cmp_attr(n,r,"day")),a}convertToZone(t){let e=this.clone(),n=this.zone.tzid==t.tzid;return this.isDate||n||it.convert_time(e,this.zone,t),e.zone=t,e}utcOffset(){return this.zone==it.localTimezone||this.zone==it.utcTimezone?0:this.zone.utcOffset(this)}toICALString(){let t=this.toString();return t.length>10?re.icalendar.value["date-time"].toICAL(t):re.icalendar.value.date.toICAL(t)}toString(){let t=this.year+"-"+pt(this.month)+"-"+pt(this.day);return this.isDate||(t+="T"+pt(this.hour)+":"+pt(this.minute)+":"+pt(this.second),this.zone===it.utcTimezone&&(t+="Z")),t}toJSDate(){return this.zone==it.localTimezone?this.isDate?new Date(this.year,this.month-1,this.day):new Date(this.year,this.month-1,this.day,this.hour,this.minute,this.second,0):new Date(1e3*this.toUnixTime())}_normalize(){return this._time.isDate&&(this._time.hour=0,this._time.minute=0,this._time.second=0),this.adjust(0,0,0,0),this}adjust(t,e,n,r,a){let i,s,o,l,d,c,u,h=0,f=0,m=a||this._time;if(m.isDate||(o=m.second+r,m.second=o%60,i=At(o/60),m.second<0&&(m.second+=60,i--),l=m.minute+n+i,m.minute=l%60,s=At(l/60),m.minute<0&&(m.minute+=60,s--),d=m.hour+e+s,m.hour=d%24,h=At(d/24),m.hour<0&&(m.hour+=24,h--)),m.month>12?f=At((m.month-1)/12):m.month<1&&(f=At(m.month/12)-1),m.year+=f,m.month-=12*f,c=m.day+t+h,c>0)for(;u=Q.daysInMonth(m.month,m.year),!(c<=u);)m.month++,m.month>12&&(m.year++,m.month=1),c-=u;else for(;c<=0;)1==m.month?(m.year--,m.month=12):m.month--,c+=Q.daysInMonth(m.month,m.year);return m.day=c,this._cachedUnixTime=null,this}fromUnixTime(t){this.zone=it.utcTimezone;let e=new Date(1e3*t);this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this._time.isDate?(this.hour=0,this.minute=0,this.second=0):(this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()),this._cachedUnixTime=null}toUnixTime(){if(null!==this._cachedUnixTime)return this._cachedUnixTime;let t=this.utcOffset(),e=Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second-t);return this._cachedUnixTime=e/1e3,this._cachedUnixTime}toJSON(){let t,e=["year","month","day","hour","minute","second","isDate"],n=Object.create(null),r=0,a=e.length;for(;r1)throw new rt("invalid ical body. component began but did not end");return e=null,1==n.length?n[0]:n}nt.property=function(t,e){let n={component:[[],[]],designSet:e||re.defaultSet};return nt._handleContentLine(t,n),n.component[1][0]},nt.component=function(t){return nt(t)};class rt extends Error{name=this.constructor.name}nt.ParserError=rt,nt._handleContentLine=function(t,e){let n,r,a,i,s,o,l=t.indexOf(tt),d=t.indexOf(";"),c={};if(-1!==d&&-1!==l&&d>l&&(d=-1),-1!==d){if(a=t.slice(0,Math.max(0,d)).toLowerCase(),s=nt._parseParameters(t.slice(Math.max(0,d)),0,e.designSet),-1==s[2])throw new rt("Invalid parameters in '"+t+"'");let o;if(c=s[0],o="string"==typeof s[1]?s[1].length:s[1].reduce((t,e)=>t+e.length,0),n=o+s[2]+d,-1===(r=t.slice(Math.max(0,n)).indexOf(tt)))throw new rt("Missing parameter value in '"+t+"'");i=t.slice(Math.max(0,n+r+1))}else{if(-1===l)throw new rt('invalid line (no token ";" or ":") "'+t+'"');if(a=t.slice(0,Math.max(0,l)).toLowerCase(),i=t.slice(Math.max(0,l+1)),"begin"===a){let t=[i.toLowerCase(),[],[]];return 1===e.stack.length?e.component.push(t):e.component[2].push(t),e.stack.push(e.component),e.component=t,void(e.designSet||(e.designSet=re.getDesignSet(e.component[0])))}if("end"===a)return void(e.component=e.stack.pop())}let u,h,f,m,p=!1,A=!1;e.designSet.propertyGroups&&-1!==a.indexOf(".")?(h=a.split("."),c.group=h[0],f=h[1]):f=a,f in e.designSet.property&&(u=e.designSet.property[f],"multiValue"in u&&(p=u.multiValue),"structuredValue"in u&&(A=u.structuredValue),i&&"detectType"in u&&(o=u.detectType(i))),o||(o="value"in c?c.value.toLowerCase():u?u.defaultType:"unknown"),delete c.value,p&&A?(i=nt._parseMultiValue(i,A,o,[],p,e.designSet,A),m=[f,c,o,i]):p?(m=[f,c,o],nt._parseMultiValue(i,p,o,m,null,e.designSet,!1)):A?(i=nt._parseMultiValue(i,A,o,[],null,e.designSet,A),m=[f,c,o,i]):(i=nt._parseValue(i,o,e.designSet,!1),m=[f,c,o,i]),"vcard"!==e.component[0]||0!==e.component[1].length||"version"===a&&"4.0"===i||(e.designSet=re.getDesignSet("vcard3")),e.component[1].push(m)},nt._parseValue=function(t,e,n,r){return e in n.value&&"fromICAL"in n.value[e]?n.value[e].fromICAL(t,r):t},nt._parseParameters=function(t,e,n){let r,a,i,s,o,l,d=e,c=0,u={},h=-1;for(;!1!==c&&-1!==(c=t.indexOf("=",c+1));){if(r=t.slice(d+1,c),0==r.length)throw new rt("Empty parameter name in '"+t+"'");if(a=r.toLowerCase(),l=!1,o=!1,s=a in n.param&&n.param[a].valueType?n.param[a].valueType:"text",a in n.param&&(o=n.param[a].multiValue,n.param[a].multiValueSeparateDQuote&&(l=nt._rfc6868Escape('"'+o+'"'))),'"'===t[c+1]){if(h=c+2,c=t.indexOf('"',h),o&&-1!=c){let e=!0;for(;e;)t[c+1]==o&&'"'==t[c+2]?c=t.indexOf('"',c+3):e=!1}if(-1===c)throw new rt('invalid line (no matching double quote) "'+t+'"');i=t.slice(h,c),d=t.indexOf(";",c);let e=t.indexOf(tt,c);(-1===d||-1!==e&&d>e)&&(c=!1)}else{h=c+1;let e=t.indexOf(";",h),n=t.indexOf(tt,h);-1!==n&&e>n?(e=n,c=!1):-1===e?(e=-1===n?t.length:n,c=!1):(d=e,c=e),i=t.slice(h,e)}const e=i.length;if(i=nt._rfc6868Escape(i),h+=e-i.length,o){let t=l||o;i=nt._parseMultiValue(i,t,s,[],null,n)}else i=nt._parseValue(i,s,n);o&&a in u?Array.isArray(u[a])?u[a].push(i):u[a]=[u[a],i]:u[a]=i}return[u,i,h]},nt._rfc6868Escape=function(t){return t.replace(/\^['n^]/g,function(t){return et[t]})},nt._parseMultiValue=function(t,e,n,r,a,i,s){let o,l=0,d=0;if(0===e.length)return t;for(;-1!==(l=ut(t,e,d));)o=t.slice(d,l),o=a?nt._parseMultiValue(o,a,n,[],null,i,s):nt._parseValue(o,n,i,s),r.push(o),d=l+e.length;return o=t.slice(d),o=a?nt._parseMultiValue(o,a,n,[],null,i,s):nt._parseValue(o,n,i,s),r.push(o),1==r.length?r[0]:r},nt._eachLine=function(t,e){let n,r,a,i=t.length,s=t.search(X),o=s;do{o=t.indexOf("\n",s)+1,a=o>1&&"\r"===t[o-2]?2:1,0===o&&(o=i,a=0),r=t[s]," "===r||"\t"===r?n+=t.slice(s+1,o-a):(n&&e(null,n),n=t.slice(s,o-a)),s=o}while(o!==i);n=n.trim(),n.length&&e(null,n)};const at=["tzid","location","tznames","latitude","longitude"];class it{static _compare_change_fn(t,e){return t.yeare.year?1:t.monthe.month?1:t.daye.day?1:t.houre.hour?1:t.minutee.minute?1:t.seconde.second?1:0}static convert_time(t,e,n){if(t.isDate||e.tzid==n.tzid||e==it.localTimezone||n==it.localTimezone)return t.zone=n,t;let r=e.utcOffset(t);return t.adjust(0,0,0,-r),r=n.utcOffset(t),t.adjust(0,0,0,r),null}static fromData(t){return(new it).fromData(t)}static#e=null;static get utcTimezone(){return this.#e||(this.#e=it.fromData({tzid:"UTC"})),this.#e}static#n=null;static get localTimezone(){return this.#n||(this.#n=it.fromData({tzid:"floating"})),this.#n}static adjust_change(t,e,n,r,a){return Q.prototype.adjust.call(t,e,n,r,a,t)}static _minimumExpansionYear=-1;static EXTRA_COVERAGE=5;constructor(t){this.wrappedJSObject=this,this.fromData(t)}tzid="";location="";tznames="";latitude=0;longitude=0;component=null;expandedUntilYear=0;icalclass="icaltimezone";fromData(t){if(this.expandedUntilYear=0,this.changes=[],t instanceof de)this.component=t;else{if(t&&"component"in t)if("string"==typeof t.component){let e=nt(t.component);this.component=new de(e)}else t.component instanceof de?this.component=t.component:this.component=null;for(let e of at)t&&e in t&&(this[e]=t[e])}return this.component instanceof de&&!this.tzid&&(this.tzid=this.component.getFirstPropertyValue("tzid")),this}utcOffset(t){if(this==it.utcTimezone||this==it.localTimezone)return 0;if(this._ensureCoverage(t.year),!this.changes.length)return 0;let e={year:t.year,month:t.month,day:t.day,hour:t.hour,minute:t.minute,second:t.second},n=this._findNearbyChange(e),r=-1,a=1;for(;;){let t=ft(this.changes[n],!0);if(t.utcOffset=0?r=n:a=-1,-1==a&&-1!=r)break;if(n+=a,n<0)return 0;if(n>=this.changes.length)break}let i=this.changes[r];if(i.utcOffset-i.prevUtcOffset<0&&r>0){let t=ft(i,!0);if(it.adjust_change(t,0,0,0,t.prevUtcOffset),it._compare_change_fn(e,t)<0){let t=this.changes[r-1],e=!1;i.is_daylight!=e&&t.is_daylight==e&&(i=t)}}return i.utcOffset}_findNearbyChange(t){let e=ht(this.changes,t,it._compare_change_fn);return e>=this.changes.length?this.changes.length-1:e}_ensureCoverage(t){if(-1==it._minimumExpansionYear){let t=Q.now();it._minimumExpansionYear=t.year}let e=t;if(ee)&&t);)r.year=t.year,r.month=t.month,r.day=t.day,r.hour=t.hour,r.minute=t.minute,r.second=t.second,r.isDate=t.isDate,it.adjust_change(r,0,0,0,-r.prevUtcOffset),n.push(r)}}else r=s(),r.year=a.year,r.month=a.month,r.day=a.day,r.hour=a.hour,r.minute=a.minute,r.second=a.second,it.adjust_change(r,0,0,0,-r.prevUtcOffset),n.push(r);return n}toString(){return this.tznames?this.tznames:this.tzid}}let st=null;const ot={get count(){return null===st?0:Object.keys(st).length},reset:function(){st=Object.create(null);let t=it.utcTimezone;st.Z=t,st.UTC=t,st.GMT=t},_hard_reset:function(){st=null},has:function(t){return null!==st&&!!st[t]},get:function(t){return null===st&&this.reset(),st[t]},register:function(t,e){if(null===st&&this.reset(),"string"==typeof t&&e instanceof it&&([t,e]=[e,t]),e||(t instanceof it?e=t.tzid:"vtimezone"===t.name&&(e=(t=new it(t)).tzid)),!e)throw new TypeError("Neither a timezone nor a name was passed");if(!(t instanceof it))throw new TypeError("timezone must be ICAL.Timezone or ICAL.Component");st[e]=t},remove:function(t){return null===st?null:delete st[t]}};function lt(t){return"number"==typeof t&&isNaN(t)}function dt(t){let e=parseInt(t,10);if(lt(e))throw new Error('Could not extract integer from "'+t+'"');return e}function ct(t,e){if(void 0!==t)return t instanceof e?t:new e(t)}function ut(t,e,n){for(;-1!==(n=t.indexOf(e,n));){if(!(n>0&&"\\"===t[n-1]))return n;n+=1}return-1}function ht(t,e,n){if(!t.length)return 0;let r,a,i=0,s=t.length-1;for(;i<=s;)if(r=i+Math.floor((s-i)/2),a=n(e,t[r]),a<0)s=r-1;else{if(!(a>0))break;i=r+1}return a<0?r:a>0?r+1:r}function ft(t,e){if(t&&"object"==typeof t){if(t instanceof Date)return new Date(t.getTime());if("clone"in t)return t.clone();if(Array.isArray(t)){let n=[];for(let r=0;r65535?2:1:(e+=fe.newLineChar+" "+n.slice(0,Math.max(0,r)),n=n.slice(Math.max(0,r)),r=a=0)}return e.slice(fe.newLineChar.length+1)}function pt(t){switch("string"!=typeof t&&("number"==typeof t&&(t=parseInt(t)),t=String(t)),t.length){case 0:return"00";case 1:return"0"+t;default:return t}}function At(t){return t<0?Math.ceil(t):Math.floor(t)}function yt(t,e){for(let n in t){let r=Object.getOwnPropertyDescriptor(t,n);r&&!Object.getOwnPropertyDescriptor(e,n)&&Object.defineProperty(e,n,r)}return e}var Tt=Object.freeze({__proto__:null,binsearchInsert:ht,clone:ft,extend:yt,foldline:mt,formatClassType:ct,isStrictlyNaN:lt,pad2:pt,strictParseInt:dt,trunc:At,unescapedIndexOf:ut,updateTimezones:function(t){let e,n,r,a,i;if(!t||"vcalendar"!==t.name)return t;for(e=t.getAllSubcomponents(),n=[],r={},i=0;in)-(n>e)}_normalize(){let t=this.toSeconds(),e=this.factor;for(;t<-43200;)t+=97200;for(;t>50400;)t-=97200;this.fromSeconds(t),0==t&&(this.factor=e)}toICALString(){return re.icalendar.value["utc-offset"].toICAL(this.toString())}toString(){return(1==this.factor?"+":"-")+pt(this.hours)+":"+pt(this.minutes)}}class St extends Q{static fromDateAndOrTimeString(t,e){function n(t,e,n){return t?dt(t.slice(e,e+n)):null}let r=t.split("T"),a=r[0],i=r[1],s=i?re.vcard.value.time._splitZone(i):[],o=s[0],l=s[1],d=a?a.length:0,c=l?l.length:0,u=a&&"-"==a[0]&&"-"==a[1],h=l&&"-"==l[0],f={year:u?null:n(a,0,4),month:!u||4!=d&&7!=d?7==d||10==d?n(a,5,2):null:n(a,2,2),day:5==d?n(a,3,2):7==d&&u?n(a,5,2):10==d?n(a,8,2):null,hour:h?null:n(l,0,2),minute:h&&3==c?n(l,1,2):c>4?n(l,h?1:3,2):null,second:4==c?n(l,2,2):6==c?n(l,4,2):8==c?n(l,6,2):null};return o="Z"==o?it.utcTimezone:o&&":"==o[3]?gt.fromString(o):null,new St(f,o,e)}constructor(t,e,n){super(t,e),this.icaltype=n||"date-and-or-time"}icalclass="vcardtime";icaltype="date-and-or-time";clone(){return new St(this._time,this.zone,this.icaltype)}_normalize(){return this}utcOffset(){return this.zone instanceof gt?this.zone.toSeconds():Q.prototype.utcOffset.apply(this,arguments)}toICALString(){return re.vcard.value[this.icaltype].toICAL(this.toString())}toString(){let t,e=this.year,n=this.month,r=this.day,a=this.hour,i=this.minute,s=this.second,o=null!==n,l=null!==r,d=null!==a,c=null!==i,u=null!==s,h=(null!==e?pt(e)+(o||l?"-":""):o||l?"--":"")+(o?pt(n):"")+(l?"-"+pt(r):""),f=(d?pt(a):"-")+(d&&c?":":"")+(c?pt(i):"")+(d||c?"":"-")+(c&&u?":":"")+(u?pt(s):"");switch(t=this.zone===it.utcTimezone?"Z":this.zone instanceof gt?this.zone.toString():this.zone===it.localTimezone?"":this.zone instanceof it?gt.fromSeconds(this.zone.utcOffset(this)).toString():"",this.icaltype){case"time":return f+t;case"date-and-or-time":case"date-time":return h+("--"==f?"":"T"+f+t);case"date":return h}return null}}class vt{static _indexMap={BYSECOND:0,BYMINUTE:1,BYHOUR:2,BYDAY:3,BYMONTHDAY:4,BYYEARDAY:5,BYWEEKNO:6,BYMONTH:7,BYSETPOS:8};static _expandMap={SECONDLY:[1,1,1,1,1,1,1,1],MINUTELY:[2,1,1,1,1,1,1,1],HOURLY:[2,2,1,1,1,1,1,1],DAILY:[2,2,2,1,1,1,1,1],WEEKLY:[2,2,2,2,3,3,1,1],MONTHLY:[2,2,2,2,2,3,3,1],YEARLY:[2,2,2,2,2,2,2,2]};static UNKNOWN=0;static CONTRACT=1;static EXPAND=2;static ILLEGAL=3;constructor(t){this.fromData(t)}completed=!1;rule=null;dtstart=null;last=null;occurrence_number=0;by_indices=null;initialized=!1;by_data=null;days=null;days_index=0;fromData(t){if(this.rule=ct(t.rule,Ut),!this.rule)throw new Error("iterator requires a (ICAL.Recur) rule");if(this.dtstart=ct(t.dtstart,Q),!this.dtstart)throw new Error("iterator requires a (ICAL.Time) dtstart");if(t.by_data?this.by_data=t.by_data:this.by_data=ft(this.rule.parts,!0),t.occurrence_number&&(this.occurrence_number=t.occurrence_number),this.days=t.days||[],t.last&&(this.last=ct(t.last,Q)),this.by_indices=t.by_indices,this.by_indices||(this.by_indices={BYSECOND:0,BYMINUTE:0,BYHOUR:0,BYDAY:0,BYMONTH:0,BYWEEKNO:0,BYMONTHDAY:0}),this.initialized=t.initialized||!1,!this.initialized)try{this.init()}catch(t){if(!(t instanceof _t))throw t;this.completed=!0}}init(){this.initialized=!0,this.last=this.dtstart.clone();let t=this.by_data;if("BYDAY"in t&&this.sort_byday_rules(t.BYDAY),"BYYEARDAY"in t&&("BYMONTH"in t||"BYWEEKNO"in t||"BYMONTHDAY"in t))throw new Error("Invalid BYYEARDAY rule");if("BYWEEKNO"in t&&"BYMONTHDAY"in t)throw new Error("BYWEEKNO does not fit to BYMONTHDAY");if("MONTHLY"==this.rule.freq&&("BYYEARDAY"in t||"BYWEEKNO"in t))throw new Error("For MONTHLY recurrences neither BYYEARDAY nor BYWEEKNO may appear");if("WEEKLY"==this.rule.freq&&("BYYEARDAY"in t||"BYMONTHDAY"in t))throw new Error("For WEEKLY recurrences neither BYMONTHDAY nor BYYEARDAY may appear");if("YEARLY"!=this.rule.freq&&"BYYEARDAY"in t)throw new Error("BYYEARDAY may only appear in YEARLY rules");if(this.last.second=this.setup_defaults("BYSECOND","SECONDLY",this.dtstart.second),this.last.minute=this.setup_defaults("BYMINUTE","MINUTELY",this.dtstart.minute),this.last.hour=this.setup_defaults("BYHOUR","HOURLY",this.dtstart.hour),this.last.day=this.setup_defaults("BYMONTHDAY","DAILY",this.dtstart.day),this.last.month=this.setup_defaults("BYMONTH","MONTHLY",this.dtstart.month),"WEEKLY"==this.rule.freq)if("BYDAY"in t){let[,e]=this.ruleDayOfWeek(t.BYDAY[0],this.rule.wkst),n=e-this.last.dayOfWeek(this.rule.wkst);(this.last.dayOfWeek(this.rule.wkst)=0||n<0)&&(this.last.day+=n)}else{let e=Ut.numericDayToIcalDay(this.dtstart.dayOfWeek());t.BYDAY=[e]}if("YEARLY"==this.rule.freq){const t=this.rule.until?this.rule.until.year:2e4;for(;this.last.year<=t&&(this.expand_year_days(this.last.year),!(this.days.length>0));)this.increment_year(this.rule.interval);if(0==this.days.length)throw new _t;if(!(this._nextByYearDay()||this.next_year()||this.next_year()||this.next_year()))throw new _t}if("MONTHLY"==this.rule.freq)if(this.has_by_data("BYDAY")){let t=null,e=this.last.clone(),n=Q.daysInMonth(this.last.month,this.last.year);for(let r of this.by_data.BYDAY){this.last=e.clone();let[a,i]=this.ruleDayOfWeek(r),s=this.last.nthWeekDay(i,a);if(a>=6||a<=-6)throw new Error("Malformed values in BYDAY part");if(s>n||s<=0){if(t&&t.month==e.month)continue;for(;s>n||s<=0;)this.increment_month(),n=Q.daysInMonth(this.last.month,this.last.year),s=this.last.nthWeekDay(i,a)}this.last.day=s,(!t||this.last.compare(t)<0)&&(t=this.last.clone())}if(this.last=t.clone(),this.has_by_data("BYMONTHDAY")&&this._byDayAndMonthDay(!0),this.last.day>n||0==this.last.day)throw new Error("Malformed values in BYDAY part")}else if(this.has_by_data("BYMONTHDAY")){this.last.day=1;let t=this.normalizeByMonthDayRules(this.last.year,this.last.month,this.rule.parts.BYMONTHDAY).filter(t=>t>=this.last.day);if(t.length)this.last.day=t[0],this.by_data.BYMONTHDAY=t;else if(!this.next_month()&&!this.next_month()&&!this.next_month())throw new _t}}next(t=!1){let e,n=this.last?this.last.clone():null;if((this.rule.count&&this.occurrence_number>=this.rule.count||this.rule.until&&this.last.compare(this.rule.until)>0)&&(this.completed=!0),this.completed)return null;if(0==this.occurrence_number&&this.last.compare(this.dtstart)>=0)return this.occurrence_number++,this.last;let r=0;do{switch(e=1,this.rule.freq){case"SECONDLY":this.next_second();break;case"MINUTELY":this.next_minute();break;case"HOURLY":this.next_hour();break;case"DAILY":this.next_day();break;case"WEEKLY":this.next_week();break;case"MONTHLY":if(e=this.next_month(),e)r=0;else if(336==++r)return this.completed=!0,null;break;case"YEARLY":if(e=this.next_year(),e)r=0;else if(28==++r)return this.completed=!0,null;break;default:return null}}while(!this.check_contracting_rules()||this.last.compare(this.dtstart)<0||!e);if(0==this.last.compare(n)){if(t)throw new Error("Same occurrence found twice, protecting you from death by recursion");this.next(!0)}return this.rule.until&&this.last.compare(this.rule.until)>0?(this.completed=!0,null):(this.occurrence_number++,this.last)}next_second(){return this.next_generic("BYSECOND","SECONDLY","second","minute")}increment_second(t){return this.increment_generic(t,"second",60,"minute")}next_minute(){return this.next_generic("BYMINUTE","MINUTELY","minute","hour","next_second")}increment_minute(t){return this.increment_generic(t,"minute",60,"hour")}next_hour(){return this.next_generic("BYHOUR","HOURLY","hour","monthday","next_minute")}increment_hour(t){this.increment_generic(t,"hour",24,"monthday")}next_day(){let t="DAILY"==this.rule.freq;return 0==this.next_hour()||(t?this.increment_monthday(this.rule.interval):this.increment_monthday(1)),0}next_week(){let t=0;if(0==this.next_weekday_by_week())return t;if(this.has_by_data("BYWEEKNO")){this.by_indices.BYWEEKNO++,this.by_indices.BYWEEKNO==this.by_data.BYWEEKNO.length&&(this.by_indices.BYWEEKNO=0,t=1),this.last.month=1,this.last.day=1;let e=this.by_data.BYWEEKNO[this.by_indices.BYWEEKNO];this.last.day+=7*e,t&&this.increment_year(1)}else this.increment_monthday(7*this.rule.interval);return t}normalizeByMonthDayRules(t,e,n){let r,a=Q.daysInMonth(e,t),i=[],s=0,o=n.length;for(;sa)){if(r<0)r=a+(r+1);else if(0===r)continue;-1===i.indexOf(r)&&i.push(r)}}return i.sort(function(t,e){return t-e})}_byDayAndMonthDay(t){let e,n,r,a,i=this.by_data.BYDAY,s=0,o=i.length,l=0,d=this,c=this.last.day;function u(){for(a=Q.daysInMonth(d.last.month,d.last.year),e=d.normalizeByMonthDayRules(d.last.year,d.last.month,d.by_data.BYMONTHDAY),r=e.length;e[s]<=c&&(!t||e[s]!=c)&&sa){h();continue}let t=e[s++];if(t>=n){c=t;for(let t=0;tn&&(this.last.day=1,this.increment_month(),this.is_day_in_byday(this.last)?this.has_by_data("BYSETPOS")&&!this.check_set_position(1)||(t=1):t=0)}else if(this.has_by_data("BYMONTHDAY")){if(this.by_indices.BYMONTHDAY++,this.by_indices.BYMONTHDAY>=this.by_data.BYMONTHDAY.length&&(this.by_indices.BYMONTHDAY=0,this.increment_month(),this.by_indices.BYMONTHDAY>=this.by_data.BYMONTHDAY.length))return 0;let e=Q.daysInMonth(this.last.month,this.last.year),n=this.by_data.BYMONTHDAY[this.by_indices.BYMONTHDAY];n<0&&(n=e+n+1),n>e?(this.last.day=1,t=this.is_day_in_byday(this.last)):this.last.day=n}else{this.increment_month();let e=Q.daysInMonth(this.last.month,this.last.year);this.by_data.BYMONTHDAY[0]>e?t=0:this.last.day=this.by_data.BYMONTHDAY[0]}return t}next_weekday_by_week(){let t=0;if(0==this.next_hour())return t;if(!this.has_by_data("BYDAY"))return 1;for(;;){let e=new Q;this.by_indices.BYDAY++,this.by_indices.BYDAY==Object.keys(this.by_data.BYDAY).length&&(this.by_indices.BYDAY=0,t=1);let n=this.by_data.BYDAY[this.by_indices.BYDAY],r=this.ruleDayOfWeek(n)[1];r-=this.rule.wkst,r<0&&(r+=7),e.year=this.last.year,e.month=this.last.month,e.day=this.last.day;let a=e.startDoyWeek(this.rule.wkst);if(r+a<1&&!t)continue;let i=Q.fromDayOfYear(a+r,this.last.year);return this.last.year=i.year,this.last.month=i.month,this.last.day=i.day,t}}next_year(){return 0==this.next_hour()?0:0!=this.days.length&&++this.days_index!=this.days.length||(this.days_index=0,this.increment_year(this.rule.interval),this.has_by_data("BYMONTHDAY")&&(this.by_data.BYMONTHDAY=this.normalizeByMonthDayRules(this.last.year,this.last.month,this.rule.parts.BYMONTHDAY)),this.expand_year_days(this.last.year),0!=this.days.length)?this._nextByYearDay():0}_nextByYearDay(){let t=this.days[this.days_index],e=this.last.year;if(366==Math.abs(t)&&!Q.isLeapYear(this.last.year))return 0;t<1&&(t+=1,e+=1);let n=Q.fromDayOfYear(t,e);return this.last.day=n.day,this.last.month=n.month,1}ruleDayOfWeek(t,e){let n=t.match(/([+-]?[0-9])?(MO|TU|WE|TH|FR|SA|SU)/);return n?[parseInt(n[1]||0,10),t=Ut.icalDayToNumericDay(n[2],e)]:[0,0]}next_generic(t,e,n,r,a){let i=t in this.by_data,s=this.rule.freq==e,o=0;if(a&&0==this[a]())return o;if(i){this.by_indices[t]++;let e=this.by_data[t];this.by_indices[t]==e.length&&(this.by_indices[t]=0,o=1),this.last[n]=e[this.by_indices[t]]}else s&&this["increment_"+n](this.rule.interval);return i&&o&&s&&this["increment_"+r](1),o}increment_monthday(t){for(let e=0;et&&(this.last.day-=t,this.increment_month())}}increment_month(){if(this.last.day=1,this.has_by_data("BYMONTH"))this.by_indices.BYMONTH++,this.by_indices.BYMONTH==this.by_data.BYMONTH.length&&(this.by_indices.BYMONTH=0,this.increment_year(1)),this.last.month=this.by_data.BYMONTH[this.by_indices.BYMONTH];else{"MONTHLY"==this.rule.freq?this.last.month+=this.rule.interval:this.last.month++,this.last.month--;let t=At(this.last.month/12);this.last.month%=12,this.last.month++,0!=t&&this.increment_year(t)}this.has_by_data("BYMONTHDAY")&&(this.by_data.BYMONTHDAY=this.normalizeByMonthDayRules(this.last.year,this.last.month,this.rule.parts.BYMONTHDAY))}increment_year(t){this.last.day=1,this.last.year+=t}increment_generic(t,e,n,r){this.last[e]+=t;let a=At(this.last[e]/n);this.last[e]%=n,0!=a&&this["increment_"+r](a)}has_by_data(t){return t in this.rule.parts}expand_year_days(t){let e=new Q;this.days=[];let n={},r=["BYDAY","BYWEEKNO","BYMONTHDAY","BYMONTH","BYYEARDAY"];for(let t of r)t in this.rule.parts&&(n[t]=this.rule.parts[t]);if("BYMONTH"in n&&"BYWEEKNO"in n){let r=1,a={};e.year=t,e.isDate=!0;for(let n=0;n0?(e=d+7*(o-1),e<=r&&this.days.push(i+e)):(e=c+7*(o+1),e>0&&this.days.push(i+e))}}this.days.sort(function(t,e){return t-e})}else if(2==a&&"BYDAY"in n&&"BYMONTHDAY"in n){let e=this.expand_by_day(t);for(let n of e){let e=Q.fromDayOfYear(n,t);this.by_data.BYMONTHDAY.indexOf(e.day)>=0&&this.days.push(n)}}else if(3==a&&"BYDAY"in n&&"BYMONTHDAY"in n&&"BYMONTH"in n){let e=this.expand_by_day(t);for(let n of e){let e=Q.fromDayOfYear(n,t);this.by_data.BYMONTH.indexOf(e.month)>=0&&this.by_data.BYMONTHDAY.indexOf(e.day)>=0&&this.days.push(n)}}else if(2==a&&"BYDAY"in n&&"BYWEEKNO"in n){let e=this.expand_by_day(t);for(let n of e){let e=Q.fromDayOfYear(n,t).weekNumber(this.rule.wkst);this.by_data.BYWEEKNO.indexOf(e)&&this.days.push(n)}}else if(3==a&&"BYDAY"in n&&"BYWEEKNO"in n&&"BYMONTHDAY"in n);else if(1==a&&"BYYEARDAY"in n)this.days=this.days.concat(this.by_data.BYYEARDAY);else if(2==a&&"BYYEARDAY"in n&&"BYDAY"in n){let e=Q.isLeapYear(t)?366:365,n=new Set(this.expand_by_day(t));for(let t of this.by_data.BYYEARDAY)t<0&&(t+=e+1),n.has(t)&&this.days.push(t)}else this.days=[];let i=Q.isLeapYear(t)?366:365;return this.days.sort((t,e)=>(t<0&&(t+=i+1),e<0&&(e+=i+1),t-e)),0}expand_by_day(t){let e=[],n=this.last.clone();n.year=t,n.month=1,n.day=1,n.isDate=!0;let r=n.dayOfWeek();n.month=12,n.day=31,n.isDate=!0;let a=n.dayOfWeek(),i=n.dayOfYear();for(let t of this.by_data.BYDAY){let n=this.ruleDayOfWeek(t),s=n[0],o=n[1];if(0==s)for(let t=(o+7-r)%7+1;t<=i;t+=7)e.push(t);else if(s>0){let t;t=o>=r?o-r+1:o-r+8,e.push(t+7*(s-1))}else{let t;s=-s,t=o<=a?i-a+o:i-a+o-7,e.push(t-7*(s-1))}}return e}is_day_in_byday(t){if(this.by_data.BYDAY)for(let e of this.by_data.BYDAY){let n=this.ruleDayOfWeek(e),r=n[0],a=n[1],i=t.dayOfWeek();if(0==r&&a==i||t.nthWeekDay(a,r)==t.day)return 1}return 0}check_set_position(t){return!!this.has_by_data("BYSETPOS")&&-1!==this.by_data.BYSETPOS.indexOf(t)}sort_byday_rules(t){for(let e=0;ethis.ruleDayOfWeek(t[e],this.rule.wkst)[1]){let r=t[e];t[e]=t[n],t[n]=r}}check_contract_restriction(t,e){let n=vt._indexMap[t],r=vt._expandMap[this.rule.freq][n],a=!1;if(t in this.by_data&&r==vt.CONTRACT){let n=this.by_data[t];for(let t of n)if(t==e){a=!0;break}}else a=!0;return a}check_contracting_rules(){let t=this.last.dayOfWeek(),e=this.last.weekNumber(this.rule.wkst),n=this.last.dayOfYear();return this.check_contract_restriction("BYSECOND",this.last.second)&&this.check_contract_restriction("BYMINUTE",this.last.minute)&&this.check_contract_restriction("BYHOUR",this.last.hour)&&this.check_contract_restriction("BYDAY",Ut.numericDayToIcalDay(t))&&this.check_contract_restriction("BYWEEKNO",e)&&this.check_contract_restriction("BYMONTHDAY",this.last.day)&&this.check_contract_restriction("BYMONTH",this.last.month)&&this.check_contract_restriction("BYYEARDAY",n)}setup_defaults(t,e,n){let r=vt._indexMap[t];return vt._expandMap[this.rule.freq][r]!=vt.CONTRACT&&(t in this.by_data||(this.by_data[t]=[n]),this.rule.freq!=e)?this.by_data[t][0]:n}toJSON(){let t=Object.create(null);return t.initialized=this.initialized,t.rule=this.rule.toJSON(),t.dtstart=this.dtstart.toJSON(),t.by_data=this.by_data,t.days=this.days,t.last=this.last.toJSON(),t.by_indices=this.by_indices,t.occurrence_number=this.occurrence_number,t}}class _t extends Error{constructor(){super("Recurrence rule has no valid occurrences")}}const Et=/^(SU|MO|TU|WE|TH|FR|SA)$/,bt=/^([+-])?(5[0-3]|[1-4][0-9]|[1-9])?(SU|MO|TU|WE|TH|FR|SA)$/,Ct={SU:Q.SUNDAY,MO:Q.MONDAY,TU:Q.TUESDAY,WE:Q.WEDNESDAY,TH:Q.THURSDAY,FR:Q.FRIDAY,SA:Q.SATURDAY},Dt=Object.fromEntries(Object.entries(Ct).map(t=>t.reverse())),xt=["SECONDLY","MINUTELY","HOURLY","DAILY","WEEKLY","MONTHLY","YEARLY"];class Ut{static fromString(t){let e=this._stringToData(t,!1);return new Ut(e)}static fromData(t){return new Ut(t)}static _stringToData(t,e){let n=Object.create(null),r=t.split(";"),a=r.length;for(let t=0;t7&&(n-=7),Dt[n]}constructor(t){this.wrappedJSObject=this,this.parts={},t&&"object"==typeof t&&this.fromData(t)}parts=null;interval=1;wkst=Q.MONDAY;until=null;count=null;freq=null;icalclass="icalrecur";icaltype="recur";iterator(t){return new vt({rule:this,dtstart:t})}clone(){return new Ut(this.toJSON())}isFinite(){return!(!this.count&&!this.until)}isByCount(){return!(!this.count||this.until)}addComponent(t,e){let n=t.toUpperCase();n in this.parts?this.parts[n].push(e):this.parts[n]=[e]}setComponent(t,e){this.parts[t.toUpperCase()]=e.slice()}getComponent(t){let e=t.toUpperCase();return e in this.parts?this.parts[e].slice():[]}getNextOccurrence(t,e){let n,r=this.iterator(t);do{n=r.next()}while(n&&n.compare(e)<=0);return n&&e.zone&&(n.zone=e.zone),n}fromData(t){for(let e in t){let n=e.toUpperCase();n in Yt?Array.isArray(t[e])?this.parts[n]=t[e]:this.parts[n]=[t[e]]:this[e]=t[e]}this.interval&&"number"!=typeof this.interval&&Ot.INTERVAL(this.interval,this),this.wkst&&"number"!=typeof this.wkst&&(this.wkst=Ut.icalDayToNumericDay(this.wkst)),!this.until||this.until instanceof Q||(this.until=Q.fromString(this.until))}toJSON(){let t=Object.create(null);t.freq=this.freq,this.count&&(t.count=this.count),this.interval>1&&(t.interval=this.interval);for(let[e,n]of Object.entries(this.parts))Array.isArray(n)&&1==n.length?t[e.toLowerCase()]=n[0]:t[e.toLowerCase()]=ft(n);return this.until&&(t.until=this.until.toString()),"wkst"in this&&this.wkst!==Q.DEFAULT_WEEK_START&&(t.wkst=Ut.numericDayToIcalDay(this.wkst)),t}toString(){let t="FREQ="+this.freq;this.count&&(t+=";COUNT="+this.count),this.interval>1&&(t+=";INTERVAL="+this.interval);for(let[e,n]of Object.entries(this.parts))t+=";"+e+"="+n;return this.until&&(t+=";UNTIL="+this.until.toICALString()),"wkst"in this&&this.wkst!==Q.DEFAULT_WEEK_START&&(t+=";WKST="+Ut.numericDayToIcalDay(this.wkst)),t}}function wt(t,e,n,r){let a=r;if("+"===r[0]&&(a=r.slice(1)),a=dt(a),void 0!==e&&r '+e);if(void 0!==n&&r>n)throw new Error(t+': invalid value "'+r+'" must be < '+e);return a}const Ot={FREQ:function(t,e,n){if(-1===xt.indexOf(t))throw new Error('invalid frequency "'+t+'" expected: "'+xt.join(", ")+'"');e.freq=t},COUNT:function(t,e,n){e.count=dt(t)},INTERVAL:function(t,e,n){e.interval=dt(t),e.interval<1&&(e.interval=1)},UNTIL:function(t,e,n){t.length>10?e.until=re.icalendar.value["date-time"].fromICAL(t):e.until=re.icalendar.value.date.fromICAL(t),n||(e.until=Q.fromString(e.until))},WKST:function(t,e,n){if(!Et.test(t))throw new Error('invalid WKST value "'+t+'"');e.wkst=Ut.icalDayToNumericDay(t)}},Yt={BYSECOND:wt.bind(void 0,"BYSECOND",0,60),BYMINUTE:wt.bind(void 0,"BYMINUTE",0,59),BYHOUR:wt.bind(void 0,"BYHOUR",0,23),BYDAY:function(t){if(bt.test(t))return t;throw new Error('invalid BYDAY value "'+t+'"')},BYMONTHDAY:wt.bind(void 0,"BYMONTHDAY",-31,31),BYYEARDAY:wt.bind(void 0,"BYYEARDAY",-366,366),BYWEEKNO:wt.bind(void 0,"BYWEEKNO",-53,53),BYMONTH:wt.bind(void 0,"BYMONTH",1,12),BYSETPOS:wt.bind(void 0,"BYSETPOS",-366,366)},Bt=/\\\\|\\,|\\[Nn]/g,Mt=/\\|,|\n/g;function It(t,e){return{matches:/.*/,fromICAL:function(e,n){return function(t,e,n){return-1===t.indexOf("\\")?t:(n&&(e=new RegExp(e.source+"|\\\\"+n,e.flags)),t.replace(e,Ht))}(e,t,n)},toICAL:function(t,n){let r=e;return n&&(r=new RegExp(r.source+"|"+n,r.flags)),t.replace(r,function(t){switch(t){case"\\":return"\\\\";case";":return"\\;";case",":return"\\,";case"\n":return"\\n";default:return t}})}}}const kt={defaultType:"text"},Nt={defaultType:"text",multiValue:","},Pt={defaultType:"text",structuredValue:";"},jt={defaultType:"integer"},zt={defaultType:"date-time",allowedTypes:["date-time","date"]},Lt={defaultType:"date-time"},Wt={defaultType:"uri"},Rt={defaultType:"utc-offset"},Ft={defaultType:"recur"},Vt={defaultType:"date-and-or-time",allowedTypes:["date-time","date","text"]};function Ht(t){switch(t){case"\\\\":return"\\";case"\\;":return";";case"\\,":return",";case"\\n":case"\\N":return"\n";default:return t}}let Kt={categories:Nt,url:Wt,version:kt,uid:kt},Gt={boolean:{values:["TRUE","FALSE"],fromICAL:function(t){return"TRUE"===t},toICAL:function(t){return t?"TRUE":"FALSE"}},float:{matches:/^[+-]?\d+\.\d+$/,fromICAL:function(t){let e=parseFloat(t);return lt(e)?0:e},toICAL:function(t){return String(t)}},integer:{fromICAL:function(t){let e=parseInt(t);return lt(e)?0:e},toICAL:function(t){return String(t)}},"utc-offset":{toICAL:function(t){return t.length<7?t.slice(0,3)+t.slice(4,6):t.slice(0,3)+t.slice(4,6)+t.slice(7,9)},fromICAL:function(t){return t.length<6?t.slice(0,3)+":"+t.slice(3,5):t.slice(0,3)+":"+t.slice(3,5)+":"+t.slice(5,7)},decorate:function(t){return gt.fromString(t)},undecorate:function(t){return t.toString()}}};const qt=yt(Gt,{text:It(/\\\\|\\;|\\,|\\[Nn]/g,/\\|;|,|\n/g),uri:{},binary:{decorate:function(t){return K.fromString(t)},undecorate:function(t){return t.toString()}},"cal-address":{},date:{decorate:function(t,e){return re.strict?Q.fromDateString(t,e):Q.fromString(t,e)},undecorate:function(t){return t.toString()},fromICAL:function(t){return!re.strict&&t.length>=15?qt["date-time"].fromICAL(t):t.slice(0,4)+"-"+t.slice(4,6)+"-"+t.slice(6,8)},toICAL:function(t){let e=t.length;return 10==e?t.slice(0,4)+t.slice(5,7)+t.slice(8,10):e>=19?qt["date-time"].toICAL(t):t}},"date-time":{fromICAL:function(t){if(re.strict||8!=t.length){let e=t.slice(0,4)+"-"+t.slice(4,6)+"-"+t.slice(6,8)+"T"+t.slice(9,11)+":"+t.slice(11,13)+":"+t.slice(13,15);return t[15]&&"Z"===t[15]&&(e+="Z"),e}return qt.date.fromICAL(t)},toICAL:function(t){let e=t.length;if(10!=e||re.strict){if(e>=19){let e=t.slice(0,4)+t.slice(5,7)+t.slice(8,13)+t.slice(14,16)+t.slice(17,19);return t[19]&&"Z"===t[19]&&(e+="Z"),e}return t}return qt.date.toICAL(t)},decorate:function(t,e){return re.strict?Q.fromDateTimeString(t,e):Q.fromString(t,e)},undecorate:function(t){return t.toString()}},duration:{decorate:function(t){return $.fromString(t)},undecorate:function(t){return t.toString()}},period:{fromICAL:function(t){let e=t.split("/");return e[0]=qt["date-time"].fromICAL(e[0]),$.isValueString(e[1])||(e[1]=qt["date-time"].fromICAL(e[1])),e},toICAL:function(t){return t=t.slice(),re.strict||10!=t[0].length?t[0]=qt["date-time"].toICAL(t[0]):t[0]=qt.date.toICAL(t[0]),$.isValueString(t[1])||(re.strict||10!=t[1].length?t[1]=qt["date-time"].toICAL(t[1]):t[1]=qt.date.toICAL(t[1])),t.join("/")},decorate:function(t,e){return J.fromJSON(t,e,!re.strict)},undecorate:function(t){return t.toJSON()}},recur:{fromICAL:function(t){return Ut._stringToData(t,!0)},toICAL:function(t){let e="";for(let[n,r]of Object.entries(t))"until"==n?r=r.length>10?qt["date-time"].toICAL(r):qt.date.toICAL(r):"wkst"==n?"number"==typeof r&&(r=Ut.numericDayToIcalDay(r)):Array.isArray(r)&&(r=r.join(",")),e+=n.toUpperCase()+"="+r+";";return e.slice(0,Math.max(0,e.length-1))},decorate:function(t){return Ut.fromData(t)},undecorate:function(t){return t.toJSON()}},time:{fromICAL:function(t){if(t.length<6)return t;let e=t.slice(0,2)+":"+t.slice(2,4)+":"+t.slice(4,6);return"Z"===t[6]&&(e+="Z"),e},toICAL:function(t){if(t.length<8)return t;let e=t.slice(0,2)+t.slice(3,5)+t.slice(6,8);return"Z"===t[8]&&(e+="Z"),e}}});let $t=yt(Kt,{action:kt,attach:{defaultType:"uri"},attendee:{defaultType:"cal-address"},calscale:kt,class:kt,comment:kt,completed:Lt,contact:kt,created:Lt,description:kt,dtend:zt,dtstamp:Lt,dtstart:zt,due:zt,duration:{defaultType:"duration"},exdate:{defaultType:"date-time",allowedTypes:["date-time","date"],multiValue:","},exrule:Ft,freebusy:{defaultType:"period",multiValue:","},geo:{defaultType:"float",structuredValue:";"},"last-modified":Lt,location:kt,method:kt,organizer:{defaultType:"cal-address"},"percent-complete":jt,priority:jt,prodid:kt,"related-to":kt,repeat:jt,rdate:{defaultType:"date-time",allowedTypes:["date-time","date","period"],multiValue:",",detectType:function(t){return-1!==t.indexOf("/")?"period":-1===t.indexOf("T")?"date":"date-time"}},"recurrence-id":zt,resources:Nt,"request-status":Pt,rrule:Ft,sequence:jt,status:kt,summary:kt,transp:kt,trigger:{defaultType:"duration",allowedTypes:["duration","date-time"]},tzoffsetfrom:Rt,tzoffsetto:Rt,tzurl:Wt,tzid:kt,tzname:kt});const Zt=yt(Gt,{text:It(Bt,Mt),uri:It(Bt,Mt),date:{decorate:function(t){return St.fromDateAndOrTimeString(t,"date")},undecorate:function(t){return t.toString()},fromICAL:function(t){return 8==t.length?qt.date.fromICAL(t):"-"==t[0]&&6==t.length?t.slice(0,4)+"-"+t.slice(4):t},toICAL:function(t){return 10==t.length?qt.date.toICAL(t):"-"==t[0]&&7==t.length?t.slice(0,4)+t.slice(5):t}},time:{decorate:function(t){return St.fromDateAndOrTimeString("T"+t,"time")},undecorate:function(t){return t.toString()},fromICAL:function(t){let e=Zt.time._splitZone(t,!0),n=e[0],r=e[1];return 6==r.length?r=r.slice(0,2)+":"+r.slice(2,4)+":"+r.slice(4,6):4==r.length&&"-"!=r[0]?r=r.slice(0,2)+":"+r.slice(2,4):5==r.length&&(r=r.slice(0,3)+":"+r.slice(3,5)),5!=n.length||"-"!=n[0]&&"+"!=n[0]||(n=n.slice(0,3)+":"+n.slice(3)),r+n},toICAL:function(t){let e=Zt.time._splitZone(t),n=e[0],r=e[1];return 8==r.length?r=r.slice(0,2)+r.slice(3,5)+r.slice(6,8):5==r.length&&"-"!=r[0]?r=r.slice(0,2)+r.slice(3,5):6==r.length&&(r=r.slice(0,3)+r.slice(4,6)),6!=n.length||"-"!=n[0]&&"+"!=n[0]||(n=n.slice(0,3)+n.slice(4)),r+n},_splitZone:function(t,e){let n,r,a=t.length-1,i=t.length-(e?5:6),s=t[i];return"Z"==t[a]?(n=t[a],r=t.slice(0,Math.max(0,a))):t.length>6&&("-"==s||"+"==s)?(n=t.slice(i),r=t.slice(0,Math.max(0,i))):(n="",r=t),[n,r]}},"date-time":{decorate:function(t){return St.fromDateAndOrTimeString(t,"date-time")},undecorate:function(t){return t.toString()},fromICAL:function(t){return Zt["date-and-or-time"].fromICAL(t)},toICAL:function(t){return Zt["date-and-or-time"].toICAL(t)}},"date-and-or-time":{decorate:function(t){return St.fromDateAndOrTimeString(t,"date-and-or-time")},undecorate:function(t){return t.toString()},fromICAL:function(t){let e=t.split("T");return(e[0]?Zt.date.fromICAL(e[0]):"")+(e[1]?"T"+Zt.time.fromICAL(e[1]):"")},toICAL:function(t){let e=t.split("T");return Zt.date.toICAL(e[0])+(e[1]?"T"+Zt.time.toICAL(e[1]):"")}},timestamp:qt["date-time"],"language-tag":{matches:/^[a-zA-Z0-9-]+$/},"phone-number":{fromICAL:function(t){return Array.from(t).filter(function(t){return"\\"===t?void 0:t}).join("")},toICAL:function(t){return Array.from(t).map(function(t){return","===t||";"===t?"\\"+t:t}).join("")}}});let Jt=yt(Kt,{adr:{defaultType:"text",structuredValue:";",multiValue:","},anniversary:Vt,bday:Vt,caladruri:Wt,caluri:Wt,clientpidmap:Pt,email:kt,fburl:Wt,fn:kt,gender:Pt,geo:Wt,impp:Wt,key:Wt,kind:kt,lang:{defaultType:"language-tag"},logo:Wt,member:Wt,n:{defaultType:"text",structuredValue:";",multiValue:","},nickname:Nt,note:kt,org:{defaultType:"text",structuredValue:";"},photo:Wt,related:Wt,rev:{defaultType:"timestamp"},role:kt,sound:Wt,source:Wt,tel:{defaultType:"uri",allowedTypes:["uri","text"]},title:kt,tz:{defaultType:"text",allowedTypes:["text","utc-offset","uri"]},xml:kt}),Qt=yt(Gt,{binary:qt.binary,date:Zt.date,"date-time":Zt["date-time"],"phone-number":Zt["phone-number"],uri:qt.uri,text:Zt.text,time:qt.time,vcard:qt.text,"utc-offset":{toICAL:function(t){return t.slice(0,7)},fromICAL:function(t){return t.slice(0,7)},decorate:function(t){return gt.fromString(t)},undecorate:function(t){return t.toString()}}}),Xt=yt(Kt,{fn:kt,n:{defaultType:"text",structuredValue:";",multiValue:","},nickname:Nt,photo:{defaultType:"binary",allowedTypes:["binary","uri"]},bday:{defaultType:"date-time",allowedTypes:["date-time","date"],detectType:function(t){return-1===t.indexOf("T")?"date":"date-time"}},adr:{defaultType:"text",structuredValue:";",multiValue:","},label:kt,tel:{defaultType:"phone-number"},email:kt,mailer:kt,tz:{defaultType:"utc-offset",allowedTypes:["utc-offset","text"]},geo:{defaultType:"float",structuredValue:";"},title:kt,role:kt,logo:{defaultType:"binary",allowedTypes:["binary","uri"]},agent:{defaultType:"vcard",allowedTypes:["vcard","text","uri"]},org:Pt,note:Nt,prodid:kt,rev:{defaultType:"date-time",allowedTypes:["date-time","date"],detectType:function(t){return-1===t.indexOf("T")?"date":"date-time"}},"sort-string":kt,sound:{defaultType:"binary",allowedTypes:["binary","uri"]},class:kt,key:{defaultType:"binary",allowedTypes:["binary","text"]}}),te={name:"ical",value:qt,param:{cutype:{values:["INDIVIDUAL","GROUP","RESOURCE","ROOM","UNKNOWN"],allowXName:!0,allowIanaToken:!0},"delegated-from":{valueType:"cal-address",multiValue:",",multiValueSeparateDQuote:!0},"delegated-to":{valueType:"cal-address",multiValue:",",multiValueSeparateDQuote:!0},encoding:{values:["8BIT","BASE64"]},fbtype:{values:["FREE","BUSY","BUSY-UNAVAILABLE","BUSY-TENTATIVE"],allowXName:!0,allowIanaToken:!0},member:{valueType:"cal-address",multiValue:",",multiValueSeparateDQuote:!0},partstat:{values:["NEEDS-ACTION","ACCEPTED","DECLINED","TENTATIVE","DELEGATED","COMPLETED","IN-PROCESS"],allowXName:!0,allowIanaToken:!0},range:{values:["THISANDFUTURE"]},related:{values:["START","END"]},reltype:{values:["PARENT","CHILD","SIBLING"],allowXName:!0,allowIanaToken:!0},role:{values:["REQ-PARTICIPANT","CHAIR","OPT-PARTICIPANT","NON-PARTICIPANT"],allowXName:!0,allowIanaToken:!0},rsvp:{values:["TRUE","FALSE"]},"sent-by":{valueType:"cal-address"},tzid:{matches:/^\//},value:{values:["binary","boolean","cal-address","date","date-time","duration","float","integer","period","recur","text","time","uri","utc-offset"],allowXName:!0,allowIanaToken:!0}},property:$t,propertyGroups:!1},ee={name:"vcard4",value:Zt,param:{type:{valueType:"text",multiValue:","},value:{values:["text","uri","date","time","date-time","date-and-or-time","timestamp","boolean","integer","float","utc-offset","language-tag"],allowXName:!0,allowIanaToken:!0}},property:Jt,propertyGroups:!0},ne={name:"vcard3",value:Qt,param:{type:{valueType:"text",multiValue:","},value:{values:["text","uri","date","date-time","phone-number","time","boolean","integer","float","utc-offset","vcard","binary"],allowXName:!0,allowIanaToken:!0}},property:Xt,propertyGroups:!0};const re={strict:!0,defaultSet:te,defaultType:"unknown",components:{vcard:ee,vcard3:ne,vevent:te,vtodo:te,vjournal:te,valarm:te,vtimezone:te,daylight:te,standard:te},icalendar:te,vcard:ee,vcard3:ne,getDesignSet:function(t){return t&&t in re.components?re.components[t]:re.defaultSet}},ae="\r\n",ie="unknown",se={'"':"^'","\n":"^n","^":"^^"};function oe(t){"string"==typeof t[0]&&(t=[t]);let e=0,n=t.length,r="";for(;e0&&("version"!==t[1][0][0]||"4.0"!==t[1][0][3])&&(o="vcard3"),e=e||re.getDesignSet(o);i0&&"object"==typeof t[0]&&"icaltype"in t[0]&&this.resetType(t[0].icaltype),this.isDecorated)for(;n=0;i--)n&&a[i][0]!==n||this._removeObjectByIndex(t,r,i)}addSubcomponent(t){this._components||(this._components=[],this._hydratedComponentCount=0),t.parent&&t.parent.removeSubcomponent(t);let e=this.jCal[2].push(t.jCal);return this._components[e-1]=t,this._hydratedComponentCount++,t.parent=this,t}removeSubcomponent(t){let e=this._removeObject(2,"_components",t);return e&&this._hydratedComponentCount--,e}removeAllSubcomponents(t){let e=this._removeAllObjects(2,"_components",t);return this._hydratedComponentCount=0,e}addProperty(t){if(!(t instanceof le))throw new TypeError("must be instance of ICAL.Property");this._properties||(this._properties=[],this._hydratedPropertyCount=0),t.parent&&t.parent.removeProperty(t);let e=this.jCal[1].push(t.jCal);return this._properties[e-1]=t,this._hydratedPropertyCount++,t.parent=this,t}addPropertyWithValue(t,e){let n=new le(t);return n.setValue(e),this.addProperty(n),n}updatePropertyWithValue(t,e){let n=this.getFirstProperty(t);return n?n.setValue(e):n=this.addPropertyWithValue(t,e),n}removeProperty(t){let e=this._removeObject(1,"_properties",t);return e&&this._hydratedPropertyCount--,e}removeAllProperties(t){let e=this._removeAllObjects(1,"_properties",t);return this._hydratedPropertyCount=0,e}toJSON(){return this.jCal}toString(){return oe.component(this.jCal,this._designSet)}getTimeZoneByID(t){if(this.parent)return this.parent.getTimeZoneByID(t);if(!this._timezoneCache)return null;if(this._timezoneCache.has(t))return this._timezoneCache.get(t);const e=this.getAllSubcomponents("vtimezone");for(const n of e)if(n.getFirstProperty("tzid").getFirstValue()===t){const e=new it({component:n,tzid:t});return this._timezoneCache.set(t,e),e}return null}}class ce{constructor(t){this.ruleDates=[],this.exDates=[],this.fromData(t)}complete=!1;ruleIterators=null;ruleDates=null;exDates=null;ruleDateInc=0;exDateInc=0;exDate=null;ruleDate=null;dtstart=null;last=null;fromData(t){let e=ct(t.dtstart,Q);if(!e)throw new Error(".dtstart (ICAL.Time) must be given");if(this.dtstart=e,t.component)this._init(t.component);else{if(this.last=ct(t.last,Q)||e.clone(),!t.ruleIterators)throw new Error(".ruleIterators or .component must be given");this.ruleIterators=t.ruleIterators.map(function(t){return ct(t,vt)}),this.ruleDateInc=t.ruleDateInc,this.exDateInc=t.exDateInc,t.ruleDates&&(this.ruleDates=t.ruleDates.map(t=>ct(t,Q)),this.ruleDate=this.ruleDates[this.ruleDateInc]),t.exDates&&(this.exDates=t.exDates.map(t=>ct(t,Q)),this.exDate=this.exDates[this.exDateInc]),void 0!==t.complete&&(this.complete=t.complete)}}_compare_special(t,e){return!t.isDate&&e.isDate?new Q({year:t.year,month:t.month,day:t.day}).compare(e):t.compare(e)}next(){let t,e,n,r=0;for(;;){if(r++>500)throw new Error("max tries have occurred, rule may be impossible to fulfill.");if(e=this.ruleDate,t=this._nextRecurrenceIter(this.last),!e&&!t){this.complete=!0;break}if((!e||t&&e.compare(t.last)>0)&&(e=t.last.clone(),t.next()),this.ruleDate===e&&this._nextRuleDay(),this.last=e,!this.exDate||(n=this._compare_special(this.last,this.exDate),n>0&&this._nextExDay(),0!==n))return this.last;this._nextExDay()}}toJSON(){function t(t){return t.toJSON()}let e=Object.create(null);return e.ruleIterators=this.ruleIterators.map(t),this.ruleDates&&(e.ruleDates=this.ruleDates.map(t)),this.exDates&&(e.exDates=this.exDates.map(t)),e.ruleDateInc=this.ruleDateInc,e.exDateInc=this.exDateInc,e.last=this.last.toJSON(),e.dtstart=this.dtstart.toJSON(),e.complete=this.complete,e}_extractDates(t,e){let n=[],r=t.getAllProperties(e);for(let t=0,e=r.length;tt.compare(e));n.splice(t,0,e)}return n}_init(t){if(this.ruleIterators=[],this.last=this.dtstart.clone(),!t.hasProperty("rdate")&&!t.hasProperty("rrule")&&!t.hasProperty("recurrence-id"))return this.ruleDate=this.last.clone(),void(this.complete=!0);if(t.hasProperty("rdate")&&(this.ruleDates=this._extractDates(t,"rdate"),this.ruleDates[0]&&this.ruleDates[0].compare(this.dtstart)<0?(this.ruleDateInc=0,this.last=this.ruleDates[0].clone()):this.ruleDateInc=ht(this.ruleDates,this.last,(t,e)=>t.compare(e)),this.ruleDate=this.ruleDates[this.ruleDateInc]),t.hasProperty("rrule")){let e,n,r=t.getAllProperties("rrule"),a=0,i=r.length;for(;a0)&&(r=e);return r}}class ue{constructor(t,e){t instanceof de||(e=t,t=null),this.component=t||new de("vevent"),this._rangeExceptionCache=Object.create(null),this.exceptions=Object.create(null),this.rangeExceptions=[],e&&e.strictExceptions&&(this.strictExceptions=e.strictExceptions),e&&e.exceptions?e.exceptions.forEach(this.relateException,this):this.component.parent&&!this.isRecurrenceException()&&this.component.parent.getAllSubcomponents("vevent").forEach(function(t){t.hasProperty("recurrence-id")&&this.relateException(t)},this)}static THISANDFUTURE="THISANDFUTURE";exceptions=null;strictExceptions=!1;relateException(t){if(this.isRecurrenceException())throw new Error("cannot relate exception to exceptions");if(t instanceof de&&(t=new ue(t)),this.strictExceptions&&t.uid!==this.uid)throw new Error("attempted to relate unrelated exception");let e=t.recurrenceId.toString();if(this.exceptions[e]=t,t.modifiesFuture()){let n=[t.recurrenceId.toUnixTime(),e],r=ht(this.rangeExceptions,n,he);this.rangeExceptions.splice(r,0,n)}}modifiesFuture(){return!!this.component.hasProperty("recurrence-id")&&this.component.getFirstProperty("recurrence-id").getParameter("range")===ue.THISANDFUTURE}findRangeException(t){if(!this.rangeExceptions.length)return null;let e=t.toUnixTime(),n=ht(this.rangeExceptions,[e],he);if(n-=1,n<0)return null;let r=this.rangeExceptions[n];return ee[0]?1:e[0]>t[0]?-1:0}var fe={foldLength:75,debug:!1,newLineChar:"\r\n",Binary:K,Component:de,ComponentParser:class{constructor(t){void 0===t&&(t={});for(let[e,n]of Object.entries(t))this[e]=n}parseEvent=!0;parseTimezone=!0;oncomplete=function(){};onerror=function(t){};ontimezone=function(t){};onevent=function(t){};process(t){"string"==typeof t&&(t=nt(t)),t instanceof de||(t=new de(t));let e,n=t.getAllSubcomponents(),r=0,a=n.length;for(;r= 16");if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,e){if((n=n||0)<0||n+16>e.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let t=0;t<16;++t)e[n+t]=r[t];return e}return function(t,e=0){return(ye[t[e+0]]+ye[t[e+1]]+ye[t[e+2]]+ye[t[e+3]]+"-"+ye[t[e+4]]+ye[t[e+5]]+"-"+ye[t[e+6]]+ye[t[e+7]]+"-"+ye[t[e+8]]+ye[t[e+9]]+"-"+ye[t[e+10]]+ye[t[e+11]]+ye[t[e+12]]+ye[t[e+13]]+ye[t[e+14]]+ye[t[e+15]]).toLowerCase()}(r)};function ge(t,e,n,r,a,i,s,o){var l="function"==typeof t?t.options:t;return e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),l._scopeId="data-v-"+i,{exports:t,options:l}}const Se=ge({name:"CalendarAvailability",components:{NcDateTimePickerNative:v.A,NcButton:y.A,IconAdd:V.A,IconDelete:F.A},props:{slots:{type:Object,required:!0},loading:{type:Boolean,default:!1},l10nTo:{type:String,required:!0},l10nDeleteSlot:{type:String,required:!0},l10nEmptyDay:{type:String,required:!0},l10nAddSlot:{type:String,required:!0},l10nWeekDayListLabel:{type:String,default:"Weekdays"},l10nMonday:{type:String,required:!0},l10nTuesday:{type:String,required:!0},l10nWednesday:{type:String,required:!0},l10nThursday:{type:String,required:!0},l10nFriday:{type:String,required:!0},l10nSaturday:{type:String,required:!0},l10nSunday:{type:String,required:!0},l10nStartPickerLabel:{type:Function,default:t=>`Pick a start time for ${t}`},l10nEndPickerLabel:{type:Function,default:t=>`Pick a end time for ${t}`}},data(){return{internalSlots:this.slotsToInternalData(this.slots)}},watch:{slots(){this.internalSlots=this.slotsToInternalData(this.slots)}},methods:{timeStampSlotsToDateObjectSlots:t=>t.map(t=>({start:new Date(1e3*t.start),end:new Date(1e3*t.end)})),slotsToInternalData(){const t=[{id:"MO",displayName:this.l10nMonday,slots:this.timeStampSlotsToDateObjectSlots(this.slots.MO)},{id:"TU",displayName:this.l10nTuesday,slots:this.timeStampSlotsToDateObjectSlots(this.slots.TU)},{id:"WE",displayName:this.l10nWednesday,slots:this.timeStampSlotsToDateObjectSlots(this.slots.WE)},{id:"TH",displayName:this.l10nThursday,slots:this.timeStampSlotsToDateObjectSlots(this.slots.TH)},{id:"FR",displayName:this.l10nFriday,slots:this.timeStampSlotsToDateObjectSlots(this.slots.FR)},{id:"SA",displayName:this.l10nSaturday,slots:this.timeStampSlotsToDateObjectSlots(this.slots.SA)}],e={id:"SU",displayName:this.l10nSunday,slots:this.timeStampSlotsToDateObjectSlots(this.slots.SU)};return 1===(0,a.JN)()?[...t,e]:[e,...t]},internalDataToSlots(){const t={};return this.internalSlots.forEach(({id:e,slots:n})=>{t[e]=n.map(t=>({start:Math.round(t.start.getTime()/1e3),end:Math.round(t.end.getTime()/1e3)}))}),t},addSlot(t){const e=new Date;e.setHours(9,0,0,0);const n=new Date;n.setHours(17,0,0,0),t.slots.push({start:e,end:n}),this.onChangeSlots()},removeSlot(t,e){t.slots.splice(e,1),this.onChangeSlots()},onChangeSlots(){this.$emit("update:slots",this.internalDataToSlots())}}},function(){var t=this,e=t._self._c;return e("ul",{staticClass:"week-day-container",attrs:{"aria-label":t.l10nWeekDayListLabel}},[t._l(t.internalSlots,function(n){return[e("li",{key:`day-label-${n.id}`,staticClass:"day-container"},[e("div",{staticClass:"label-weekday"},[e("span",{attrs:{id:n.displayName+"-label"}},[t._v(t._s(n.displayName))])]),e("div",{key:`day-slots-${n.id}`,staticClass:"availability-slots"},[e("div",{staticClass:"availability-slot-group"},[t._l(n.slots,function(r,a){return[e("div",{key:`slot-${n.id}-${a}`,staticClass:"availability-slot"},[e("NcDateTimePickerNative",{staticClass:"start-date",attrs:{id:`start-${n.id}-${a}`,type:"time",label:t.l10nStartPickerLabel?.(n.displayName),"hide-label":!0},on:{change:t.onChangeSlots},model:{value:r.start,callback:function(e){t.$set(r,"start",e)},expression:"slot.start"}}),e("span",{staticClass:"to-text"},[t._v(" "+t._s(t.l10nTo)+" ")]),e("NcDateTimePickerNative",{staticClass:"end-date",attrs:{id:`end-${n.id}-${a}`,type:"time",label:t.l10nEndPickerLabel?.(n.displayName),"hide-label":!0},on:{change:t.onChangeSlots},model:{value:r.end,callback:function(e){t.$set(r,"end",e)},expression:"slot.end"}}),e("NcButton",{key:`slot-${n.id}-${a}-btn`,staticClass:"button",attrs:{type:"tertiary","aria-label":t.l10nDeleteSlot,title:t.l10nDeleteSlot},on:{click:function(e){return t.removeSlot(n,a)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconDelete",{attrs:{size:20}})]},proxy:!0}],null,!0)})],1)]})],2),0===n.slots.length?e("span",{staticClass:"empty-content"},[t._v(" "+t._s(t.l10nEmptyDay)+" ")]):t._e()]),e("NcButton",{key:`add-slot-${n.id}`,staticClass:"add-another button",attrs:{disabled:t.loading,title:t.l10nAddSlot,"aria-label":t.l10nAddSlot},on:{click:function(e){return t.addSlot(n)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconAdd",{attrs:{size:20}})]},proxy:!0}],null,!0)})],1)]})],2)},[],0,0,"91e2d87d").exports,ve=(0,p.YK)().detectUser().setApp("@nextcloud/calendar-availability-vue").build();var _e=n(62715),Ee=n(33455);const be=n.n(Ee)()(t=>{const e=(0,d.dC)(`dav/${t}/${(0,s.HW)().uid}`),n=(0,_e.UU)(e),r=t=>{n.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})};return(0,s.zo)(r),r((0,s.do)()),n});var Ce=n(32073),De=n(87485);const xe=(0,r.pM)({__name:"AvailabilityForm",setup(t){const e=(0,De.F)().core.user?.timezone??Intl.DateTimeFormat().resolvedOptions().timeZone,n=(0,r.KR)(!0),i=(0,r.KR)(!1),s=(0,r.KR)({MO:[],TU:[],WE:[],TH:[],FR:[],SA:[],SU:[]}),c=(0,r.KR)("yes"===(0,l.C)("dav","user_status_automation"));return(0,r.sV)(async()=>{try{const t=await async function(){const t=be("calendars"),e=await t.customRequest("inbox",{method:"PROPFIND",data:'\n\t\t\t\n\t\t\t \n\t\t\t\t\n\t\t\t \n\t\t\t'}),n=await(0,_e.h4)(await e.text());if(!n)return;const r=n?.multistatus?.response[0]?.propstat?.prop["calendar-availability"];return r?function(t){const e=fe.parse(t),n=new fe.Component(e),r=n.getFirstSubcomponent("vavailability");let a;const i=n.getFirstSubcomponent("vtimezone");i&&(a=i.getFirstProperty("tzid").getFirstValue());const s=r.getAllSubcomponents("available"),o={MO:[],TU:[],WE:[],TH:[],FR:[],SA:[],SU:[]};return s.forEach(t=>{const e=t.getFirstProperty("dtstart").getFirstValue(),n=t.getFirstProperty("dtend").getFirstValue(),r=t.getFirstProperty("rrule"),a=new Date;a.setHours(e.hour,e.minute,0,0);const i=new Date;i.setHours(n.hour,n.minute,0,0),"WEEKLY"===r.getFirstValue().freq?r.getFirstValue().getComponent("BYDAY").forEach(t=>{o[t].push({start:a.getTime()/1e3,end:i.getTime()/1e3})}):ve.warn("rrule not supported",{rrule:r.toICALString()})}),{slots:o,timezoneId:a}}(r):void 0}();t?(s.value=t.slots,A.debug("availability loaded",{slots:s.value})):A.debug("no availability is set")}catch(t){A.error("could not load existing availability",{error:t}),(0,o.Qg)((0,a.t)("dav","Failed to load availability"))}finally{n.value=!1}}),{__sfc:!0,timezone:e,loading:n,saving:i,slots:s,automated:c,save:async function(){i.value=!0;try{await async function(t,e){const n=function(t,e){const n=new fe.Component("vcalendar");n.addPropertyWithValue("prodid","Nextcloud DAV app");const r=(0,H.E$)(e);if(r){const t=new fe.Component(fe.parse(r));n.addSubcomponent(t)}else{const t=new fe.Component("vtimezone");t.addPropertyWithValue("tzid",e),n.addSubcomponent(t)}const a=new fe.Component("vavailability"),i=t.reduce((t,e)=>{const n=new Date(1e3*e.start),r=new Date(1e3*e.end),a=[n.getHours(),n.getMinutes(),r.getHours(),r.getMinutes()].join("-");return{...t,[a]:[...t[a]??[],e]}},{});return Object.keys(i).map(t=>{const n=i[t],r=n[0].start,a=n[0].end,s=n.map(t=>t.day).filter((t,e,n)=>n.indexOf(t)===e),o=new fe.Component("available");return o.addPropertyWithValue("dtstart",fe.Time.fromJSDate(new Date(1e3*r),!1)).setParameter("tzid",e),o.addPropertyWithValue("dtend",fe.Time.fromJSDate(new Date(1e3*a),!1)).setParameter("tzid",e),o.addPropertyWithValue("uid",Te()),o.addPropertyWithValue("rrule",{freq:"WEEKLY",byday:s}),o}).map(a.addSubcomponent.bind(a)),n.addSubcomponent(a),n.toString()}([...Object.keys(t).flatMap(e=>t[e].map(t=>({...t,day:e})))],e);A.debug("New availability ical created",{vavailability:n});const r=be("calendars");await r.customRequest("inbox",{method:"PROPPATCH",data:`\n\t\t\t\n\t\t\t \n\t\t\t\t\n\t\t\t\t ${n}\n\t\t\t\t\n\t\t\t \n\t\t\t`})}(s.value,e),c.value?await async function(){return await h.Ay.post((0,d.KT)("/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"dav",configKey:"user_status_automation"}),{configValue:"yes"})}():await async function(){return await h.Ay.delete((0,d.KT)("/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"dav",configKey:"user_status_automation"}))}(),(0,o.Te)((0,a.t)("dav","Saved availability"))}catch(t){console.error("could not save availability",t),(0,o.Qg)((0,a.t)("dav","Failed to save availability"))}finally{i.value=!1}},CalendarAvailability:Se,NcButton:y.A,NcCheckboxRadioSwitch:Ce.A,t:a.t}}});var Ue=n(65368),we={};we.styleTagTransform=k(),we.setAttributes=Y(),we.insert=w().bind(null,"head"),we.domAPI=x(),we.insertStyleElement=M(),C()(Ue.A,we),Ue.A&&Ue.A.locals&&Ue.A.locals;const Oe=(0,j.A)(xe,function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e("div",[e(n.CalendarAvailability,{attrs:{slots:n.slots,loading:n.loading,"l10n-to":n.t("dav","to"),"l10n-delete-slot":n.t("dav","Delete slot"),"l10n-empty-day":n.t("dav","No working hours set"),"l10n-add-slot":n.t("dav","Add slot"),"l10n-week-day-list-label":n.t("dav","Weekdays"),"l10n-monday":n.t("dav","Monday"),"l10n-tuesday":n.t("dav","Tuesday"),"l10n-wednesday":n.t("dav","Wednesday"),"l10n-thursday":n.t("dav","Thursday"),"l10n-friday":n.t("dav","Friday"),"l10n-saturday":n.t("dav","Saturday"),"l10n-sunday":n.t("dav","Sunday"),"l10n-start-picker-label":t=>n.t("dav","Pick a start time for {dayName}",{dayName:t}),"l10n-end-picker-label":t=>n.t("dav","Pick a end time for {dayName}",{dayName:t})},on:{"update:slots":function(t){n.slots=t}}}),t._v(" "),e(n.NcCheckboxRadioSwitch,{model:{value:n.automated,callback:function(t){n.automated=t},expression:"automated"}},[t._v("\n\t\t"+t._s(n.t("dav",'Automatically set user status to "Do not disturb" outside of availability to mute all notifications.'))+"\n\t")]),t._v(" "),e(n.NcButton,{attrs:{disabled:n.loading||n.saving,variant:"primary"},on:{click:n.save}},[t._v("\n\t\t"+t._s(n.t("dav","Save"))+"\n\t")])],1)},[],!1,null,"e0a387ae",null).exports,Ye={name:"Availability",components:{NcSettingsSection:i.A,AbsenceForm:L,AvailabilityForm:Oe},data:()=>({hideAbsenceSettings:(0,l.C)("dav","hide_absence_settings",!0)})},Be=(0,j.A)(Ye,function(){var t=this,e=t._self._c;return e("div",[e("NcSettingsSection",{attrs:{id:"availability",name:t.$t("dav","Availability"),description:t.$t("dav","If you configure your working hours, other people will see when you are out of office when they book a meeting.")}},[e("AvailabilityForm")],1),t._v(" "),t.hideAbsenceSettings?t._e():e("NcSettingsSection",{attrs:{id:"absence",name:t.$t("dav","Absence"),description:t.$t("dav","Configure your next absence period.")}},[e("AbsenceForm")],1)],1)},[],!1,null,null,null).exports;r.Ay.prototype.$t=a.Tl,new(r.Ay.extend(Be))({}).$mount("#settings-personal-availability")},12795(t,e,n){"use strict";n.d(e,{A:()=>o});var r=n(71354),a=n.n(r),i=n(76314),s=n.n(i)()(a());s.push([t.id,".availability-day[data-v-91e2d87d] {\n padding: 0 10px 0 10px;\n position: absolute;\n}\n.availability-slots[data-v-91e2d87d] {\n max-width: 332px;\n width: 100%;\n display: flex;\n justify-content: flex-start;\n white-space: nowrap;\n}\n.availability-slot[data-v-91e2d87d] {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.availability-slot-group[data-v-91e2d87d] {\n display: flex;\n flex-direction: column;\n}\n.time-zone[data-v-91e2d87d] {\n padding: 32px 12px 12px 0;\n}\n.week-day-container[data-v-91e2d87d] {\n box-sizing: border-box;\n margin-bottom: 32px;\n max-width: 500px;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n.button[data-v-91e2d87d] {\n align-self: flex-end;\n}\n.label-weekday[data-v-91e2d87d] {\n position: relative;\n display: flex;\n align-items: flex-start;\n min-width: 77px;\n width: 77px;\n}\n.label-weekday > span[data-v-91e2d87d] {\n height: 50px;\n display: flex;\n align-items: center;\n}\n.add-another[data-v-91e2d87d] {\n background-color: transparent;\n border: none;\n opacity: 0.5;\n display: inline-flex;\n padding: 0;\n margin: 0;\n margin-bottom: 3px;\n}\n.add-another[data-v-91e2d87d]:hover {\n opacity: 1;\n}\n.to-text[data-v-91e2d87d] {\n padding-right: 12px;\n}\n.time-zone-text[data-v-91e2d87d] {\n padding-left: 22px;\n}\n.empty-content[data-v-91e2d87d] {\n color: var(--color-text-lighter);\n display: inline-flex;\n align-items: center;\n}\n.start-date[data-v-91e2d87d] {\n padding-right: 12px;\n}\n.day-container[data-v-91e2d87d] {\n display: flex;\n max-width: 500px;\n width: 100%;\n gap: 24px;\n border-top: 1px solid var(--color-border);\n padding-top: calc(3 * var(--default-grid-baseline));\n margin-top: calc(2 * var(--default-grid-baseline));\n align-items: center;\n}\n.day-container > button[data-v-91e2d87d] {\n align-self: center;\n}","",{version:3,sources:["webpack://./node_modules/@nextcloud/calendar-availability-vue/dist/assets/index-Ctj4Wyhb.css"],names:[],mappings:"AAAA;EACE,sBAAsB;EACtB,kBAAkB;AACpB;AACA;EACE,gBAAgB;EAChB,WAAW;EACX,aAAa;EACb,2BAA2B;EAC3B,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,sBAAsB;AACxB;AACA;EACE,yBAAyB;AAC3B;AACA;EACE,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,WAAW;EACX,aAAa;EACb,sBAAsB;EACtB,uBAAuB;AACzB;AACA;EACE,oBAAoB;AACtB;AACA;EACE,kBAAkB;EAClB,aAAa;EACb,uBAAuB;EACvB,eAAe;EACf,WAAW;AACb;AACA;EACE,YAAY;EACZ,aAAa;EACb,mBAAmB;AACrB;AACA;EACE,6BAA6B;EAC7B,YAAY;EACZ,YAAY;EACZ,oBAAoB;EACpB,UAAU;EACV,SAAS;EACT,kBAAkB;AACpB;AACA;EACE,UAAU;AACZ;AACA;EACE,mBAAmB;AACrB;AACA;EACE,kBAAkB;AACpB;AACA;EACE,gCAAgC;EAChC,oBAAoB;EACpB,mBAAmB;AACrB;AACA;EACE,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,gBAAgB;EAChB,WAAW;EACX,SAAS;EACT,yCAAyC;EACzC,mDAAmD;EACnD,kDAAkD;EAClD,mBAAmB;AACrB;AACA;EACE,kBAAkB;AACpB",sourcesContent:[".availability-day[data-v-91e2d87d] {\n padding: 0 10px 0 10px;\n position: absolute;\n}\n.availability-slots[data-v-91e2d87d] {\n max-width: 332px;\n width: 100%;\n display: flex;\n justify-content: flex-start;\n white-space: nowrap;\n}\n.availability-slot[data-v-91e2d87d] {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.availability-slot-group[data-v-91e2d87d] {\n display: flex;\n flex-direction: column;\n}\n.time-zone[data-v-91e2d87d] {\n padding: 32px 12px 12px 0;\n}\n.week-day-container[data-v-91e2d87d] {\n box-sizing: border-box;\n margin-bottom: 32px;\n max-width: 500px;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n.button[data-v-91e2d87d] {\n align-self: flex-end;\n}\n.label-weekday[data-v-91e2d87d] {\n position: relative;\n display: flex;\n align-items: flex-start;\n min-width: 77px;\n width: 77px;\n}\n.label-weekday > span[data-v-91e2d87d] {\n height: 50px;\n display: flex;\n align-items: center;\n}\n.add-another[data-v-91e2d87d] {\n background-color: transparent;\n border: none;\n opacity: 0.5;\n display: inline-flex;\n padding: 0;\n margin: 0;\n margin-bottom: 3px;\n}\n.add-another[data-v-91e2d87d]:hover {\n opacity: 1;\n}\n.to-text[data-v-91e2d87d] {\n padding-right: 12px;\n}\n.time-zone-text[data-v-91e2d87d] {\n padding-left: 22px;\n}\n.empty-content[data-v-91e2d87d] {\n color: var(--color-text-lighter);\n display: inline-flex;\n align-items: center;\n}\n.start-date[data-v-91e2d87d] {\n padding-right: 12px;\n}\n.day-container[data-v-91e2d87d] {\n display: flex;\n max-width: 500px;\n width: 100%;\n gap: 24px;\n border-top: 1px solid var(--color-border);\n padding-top: calc(3 * var(--default-grid-baseline));\n margin-top: calc(2 * var(--default-grid-baseline));\n align-items: center;\n}\n.day-container > button[data-v-91e2d87d] {\n align-self: center;\n}"],sourceRoot:""}]);const o=s},85531(t,e,n){"use strict";n.d(e,{A:()=>o});var r=n(71354),a=n.n(r),i=n(76314),s=n.n(i)()(a());s.push([t.id,".absence[data-v-a9995350]{display:flex;flex-direction:column;gap:5px}.absence__dates[data-v-a9995350]{display:flex;gap:10px;width:100%}.absence__dates__picker[data-v-a9995350]{flex:1 auto}.absence__dates__picker[data-v-a9995350] .native-datetime-picker--input{margin-bottom:0}.absence__buttons[data-v-a9995350]{display:flex;gap:5px}","",{version:3,sources:["webpack://./apps/dav/src/components/AbsenceForm.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,qBAAA,CACA,OAAA,CAEA,iCACC,YAAA,CACA,QAAA,CACA,UAAA,CAEA,yCACC,WAAA,CAEA,wEACC,eAAA,CAKH,mCACC,YAAA,CACA,OAAA",sourcesContent:["\n.absence {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 5px;\n\n\t&__dates {\n\t\tdisplay: flex;\n\t\tgap: 10px;\n\t\twidth: 100%;\n\n\t\t&__picker {\n\t\t\tflex: 1 auto;\n\n\t\t\t:deep(.native-datetime-picker--input) {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tgap: 5px;\n\t}\n}\n"],sourceRoot:""}]);const o=s},65368(t,e,n){"use strict";n.d(e,{A:()=>o});var r=n(71354),a=n.n(r),i=n(76314),s=n.n(i)()(a());s.push([t.id,"[data-v-e0a387ae] .availability-day{padding:0 10px 0 10px;position:absolute}[data-v-e0a387ae] .availability-slots{display:flex;white-space:normal}[data-v-e0a387ae] .availability-slot{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap}[data-v-e0a387ae] .availability-slot-group{display:flex;flex-direction:column}[data-v-e0a387ae] .mx-input-wrapper{width:85px}[data-v-e0a387ae] .mx-datepicker{width:97px}.time-zone[data-v-e0a387ae]{padding-block:32px 12px;padding-inline:0 12px;display:flex;flex-wrap:wrap}.time-zone__heading[data-v-e0a387ae]{margin-inline-end:calc(var(--default-grid-baseline)*2);line-height:var(--default-clickable-area);font-weight:bold}.grid-table[data-v-e0a387ae]{display:grid;margin-bottom:32px;grid-column-gap:24px;grid-row-gap:6px;grid-template-columns:min-content auto min-content;max-width:500px}.button[data-v-e0a387ae]{align-self:flex-end}[data-v-e0a387ae] .label-weekday{position:relative;display:inline-flex;padding-top:4px;align-self:center}[data-v-e0a387ae] .delete-slot{padding-bottom:unset}[data-v-e0a387ae] .add-another{align-self:center}.to-text[data-v-e0a387ae]{padding-inline-end:12px}.empty-content[data-v-e0a387ae]{align-self:center;color:var(--color-text-maxcontrast);margin-block-start:var(--default-grid-baseline)}","",{version:3,sources:["webpack://./apps/dav/src/components/AvailabilityForm.vue"],names:[],mappings:"AACA,oCACC,qBAAA,CACA,iBAAA,CAGD,sCACC,YAAA,CACA,kBAAA,CAGD,qCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,cAAA,CAGD,2CACC,YAAA,CACA,qBAAA,CAGD,oCACC,UAAA,CAGD,iCACC,UAAA,CAGD,4BACC,uBAAA,CACA,qBAAA,CACA,YAAA,CACA,cAAA,CAEA,qCACC,sDAAA,CACA,yCAAA,CACA,gBAAA,CAIF,6BACC,YAAA,CACA,kBAAA,CACA,oBAAA,CACA,gBAAA,CACA,kDAAA,CACA,eAAA,CAGD,yBACC,mBAAA,CAGD,iCACC,iBAAA,CACA,mBAAA,CACA,eAAA,CACA,iBAAA,CAGD,+BACC,oBAAA,CAGD,+BACC,iBAAA,CAGD,0BACC,uBAAA,CAGD,gCACC,iBAAA,CACA,mCAAA,CACA,+CAAA",sourcesContent:["\n:deep(.availability-day) {\n\tpadding: 0 10px 0 10px;\n\tposition: absolute;\n}\n\n:deep(.availability-slots) {\n\tdisplay: flex;\n\twhite-space: normal;\n}\n\n:deep(.availability-slot) {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tflex-wrap: wrap;\n}\n\n:deep(.availability-slot-group) {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n:deep(.mx-input-wrapper) {\n\twidth: 85px;\n}\n\n:deep(.mx-datepicker) {\n\twidth: 97px;\n}\n\n.time-zone {\n\tpadding-block: 32px 12px;\n\tpadding-inline: 0 12px;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t&__heading {\n\t\tmargin-inline-end: calc(var(--default-grid-baseline) * 2);\n\t\tline-height: var(--default-clickable-area);\n\t\tfont-weight: bold;\n\t}\n}\n\n.grid-table {\n\tdisplay: grid;\n\tmargin-bottom: 32px;\n\tgrid-column-gap: 24px;\n\tgrid-row-gap: 6px;\n\tgrid-template-columns: min-content auto min-content;\n\tmax-width: 500px;\n}\n\n.button {\n\talign-self: flex-end;\n}\n\n:deep(.label-weekday) {\n\tposition: relative;\n\tdisplay: inline-flex;\n\tpadding-top: 4px;\n\talign-self: center;\n}\n\n:deep(.delete-slot) {\n\tpadding-bottom: unset;\n}\n\n:deep(.add-another) {\n\talign-self: center;\n}\n\n.to-text {\n\tpadding-inline-end: 12px;\n}\n\n.empty-content {\n\talign-self: center;\n\tcolor: var(--color-text-maxcontrast);\n\tmargin-block-start: var(--default-grid-baseline);\n}\n"],sourceRoot:""}]);const o=s},46447(t,e,n){"use strict";e.E$=void 0;const r=n(61080);function a(t){const{n:e,f:n,t:a,r:i,s}=t;return[`TZNAME:${e}`,`TZOFFSETFROM:${n}`,`TZOFFSETTO:${a||n}`,`DTSTART:${s||r.defaultStart}`,...i?[`RRULE:FREQ=${i.f||"YEARLY"};BYMONTH=${i.m};BYDAY=${i.d}`]:[]]}e.E$=function(t,e=!0){const n=function(t,e=!0){const n=r.zonesMap.get(t);if(n){const{s:r,d:i}=n;return[...e?["BEGIN:VTIMEZONE"]:[],`TZID:${t}`,"BEGIN:STANDARD",...a(r),"END:STANDARD",...i?["BEGIN:DAYLIGHT",...a(i),"END:DAYLIGHT"]:[],...e?["END:VTIMEZONE"]:[]]}}(t,e);return null==n?void 0:n.join("\r\n")}},61080(t,e){"use strict";e.zonesMap=e.defaultStart=void 0,e.defaultStart="19700101T000000",e.zonesMap=new Map([["Africa/Abidjan",{s:{f:"+0000",n:"GMT"}}],["Africa/Accra",{s:{f:"+0000",n:"GMT"}}],["Africa/Addis_Ababa",{s:{f:"+0300",n:"EAT"}}],["Africa/Algiers",{s:{f:"+0100",n:"CET"}}],["Africa/Asmara",{s:{f:"+0300",n:"EAT"}}],["Africa/Bamako",{s:{f:"+0000",n:"GMT"}}],["Africa/Bangui",{s:{f:"+0100",n:"WAT"}}],["Africa/Banjul",{s:{f:"+0000",n:"GMT"}}],["Africa/Bissau",{s:{f:"+0000",n:"GMT"}}],["Africa/Blantyre",{s:{f:"+0200",n:"CAT"}}],["Africa/Brazzaville",{s:{f:"+0100",n:"WAT"}}],["Africa/Bujumbura",{s:{f:"+0200",n:"CAT"}}],["Africa/Cairo",{s:{f:"+0200",n:"EET"}}],["Africa/Casablanca",{s:{f:"+0100",n:"+01"}}],["Africa/Ceuta",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Africa/Conakry",{s:{f:"+0000",n:"GMT"}}],["Africa/Dakar",{s:{f:"+0000",n:"GMT"}}],["Africa/Dar_es_Salaam",{s:{f:"+0300",n:"EAT"}}],["Africa/Djibouti",{s:{f:"+0300",n:"EAT"}}],["Africa/Douala",{s:{f:"+0100",n:"WAT"}}],["Africa/El_Aaiun",{s:{f:"+0100",n:"+01"}}],["Africa/Freetown",{s:{f:"+0000",n:"GMT"}}],["Africa/Gaborone",{s:{f:"+0200",n:"CAT"}}],["Africa/Harare",{s:{f:"+0200",n:"CAT"}}],["Africa/Johannesburg",{s:{f:"+0200",n:"SAST"}}],["Africa/Juba",{s:{f:"+0300",n:"EAT"}}],["Africa/Kampala",{s:{f:"+0300",n:"EAT"}}],["Africa/Khartoum",{s:{f:"+0200",n:"CAT"}}],["Africa/Kigali",{s:{f:"+0200",n:"CAT"}}],["Africa/Kinshasa",{s:{f:"+0100",n:"WAT"}}],["Africa/Lagos",{s:{f:"+0100",n:"WAT"}}],["Africa/Libreville",{s:{f:"+0100",n:"WAT"}}],["Africa/Lome",{s:{f:"+0000",n:"GMT"}}],["Africa/Luanda",{s:{f:"+0100",n:"WAT"}}],["Africa/Lubumbashi",{s:{f:"+0200",n:"CAT"}}],["Africa/Lusaka",{s:{f:"+0200",n:"CAT"}}],["Africa/Malabo",{s:{f:"+0100",n:"WAT"}}],["Africa/Maputo",{s:{f:"+0200",n:"CAT"}}],["Africa/Maseru",{s:{f:"+0200",n:"SAST"}}],["Africa/Mbabane",{s:{f:"+0200",n:"SAST"}}],["Africa/Mogadishu",{s:{f:"+0300",n:"EAT"}}],["Africa/Monrovia",{s:{f:"+0000",n:"GMT"}}],["Africa/Nairobi",{s:{f:"+0300",n:"EAT"}}],["Africa/Ndjamena",{s:{f:"+0100",n:"WAT"}}],["Africa/Niamey",{s:{f:"+0100",n:"WAT"}}],["Africa/Nouakchott",{s:{f:"+0000",n:"GMT"}}],["Africa/Ouagadougou",{s:{f:"+0000",n:"GMT"}}],["Africa/Porto-Novo",{s:{f:"+0100",n:"WAT"}}],["Africa/Sao_Tome",{s:{f:"+0100",n:"WAT"}}],["Africa/Tripoli",{s:{f:"+0200",n:"EET"}}],["Africa/Tunis",{s:{f:"+0100",n:"CET"}}],["Africa/Windhoek",{s:{f:"+0200",n:"CAT"}}],["America/Adak",{s:{f:"-0900",t:"-1000",n:"HST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-1000",t:"-0900",n:"HDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Anchorage",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Anguilla",{s:{f:"-0400",n:"AST"}}],["America/Antigua",{s:{f:"-0400",n:"AST"}}],["America/Araguaina",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Buenos_Aires",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Catamarca",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Cordoba",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Jujuy",{s:{f:"-0300",n:"-03"}}],["America/Argentina/La_Rioja",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Mendoza",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Rio_Gallegos",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Salta",{s:{f:"-0300",n:"-03"}}],["America/Argentina/San_Juan",{s:{f:"-0300",n:"-03"}}],["America/Argentina/San_Luis",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Tucuman",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Ushuaia",{s:{f:"-0300",n:"-03"}}],["America/Aruba",{s:{f:"-0400",n:"AST"}}],["America/Asuncion",{s:{f:"-0300",t:"-0400",n:"-04",s:"19700322T000000",r:{m:3,d:"4SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701004T000000",r:{m:10,d:"1SU"}}}],["America/Atikokan",{s:{f:"-0500",n:"EST"}}],["America/Bahia_Banderas",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Bahia",{s:{f:"-0300",n:"-03"}}],["America/Barbados",{s:{f:"-0400",n:"AST"}}],["America/Belem",{s:{f:"-0300",n:"-03"}}],["America/Belize",{s:{f:"-0600",n:"CST"}}],["America/Blanc-Sablon",{s:{f:"-0400",n:"AST"}}],["America/Boa_Vista",{s:{f:"-0400",n:"-04"}}],["America/Bogota",{s:{f:"-0500",n:"-05"}}],["America/Boise",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Cambridge_Bay",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Campo_Grande",{s:{f:"-0400",n:"-04",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Cancun",{s:{f:"-0500",n:"EST"}}],["America/Caracas",{s:{f:"-0400",n:"-04"}}],["America/Cayenne",{s:{f:"-0300",n:"-03"}}],["America/Cayman",{s:{f:"-0500",n:"EST"}}],["America/Chicago",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Chihuahua",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Costa_Rica",{s:{f:"-0600",n:"CST"}}],["America/Creston",{s:{f:"-0700",n:"MST"}}],["America/Cuiaba",{s:{f:"-0400",n:"-04",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Curacao",{s:{f:"-0400",n:"AST"}}],["America/Danmarkshavn",{s:{f:"+0000",n:"GMT"}}],["America/Dawson_Creek",{s:{f:"-0700",n:"MST"}}],["America/Dawson",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Denver",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Detroit",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Dominica",{s:{f:"-0400",n:"AST"}}],["America/Edmonton",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Eirunepe",{s:{f:"-0500",n:"-05"}}],["America/El_Salvador",{s:{f:"-0600",n:"CST"}}],["America/Fort_Nelson",{s:{f:"-0700",n:"MST"}}],["America/Fortaleza",{s:{f:"-0300",n:"-03"}}],["America/Glace_Bay",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Godthab",{s:{f:"-0200",t:"-0300",n:"-03",s:"19701024T230000",r:{m:10,d:"-1SA"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19700328T220000",r:{m:3,d:"-1SA"}}}],["America/Goose_Bay",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Grand_Turk",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Grenada",{s:{f:"-0400",n:"AST"}}],["America/Guadeloupe",{s:{f:"-0400",n:"AST"}}],["America/Guatemala",{s:{f:"-0600",n:"CST"}}],["America/Guayaquil",{s:{f:"-0500",n:"-05"}}],["America/Guyana",{s:{f:"-0400",n:"-04"}}],["America/Halifax",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Havana",{s:{f:"-0400",t:"-0500",n:"CST",s:"19701101T010000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"CDT",s:"19700308T000000",r:{m:3,d:"2SU"}}}],["America/Hermosillo",{s:{f:"-0700",n:"MST"}}],["America/Indiana/Indianapolis",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Knox",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Marengo",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Petersburg",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Tell_City",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Vevay",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Vincennes",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Winamac",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Inuvik",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Iqaluit",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Jamaica",{s:{f:"-0500",n:"EST"}}],["America/Juneau",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kentucky/Louisville",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kentucky/Monticello",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kralendijk",{s:{f:"-0400",n:"AST"}}],["America/La_Paz",{s:{f:"-0400",n:"-04"}}],["America/Lima",{s:{f:"-0500",n:"-05"}}],["America/Los_Angeles",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Lower_Princes",{s:{f:"-0400",n:"AST"}}],["America/Maceio",{s:{f:"-0300",n:"-03"}}],["America/Managua",{s:{f:"-0600",n:"CST"}}],["America/Manaus",{s:{f:"-0400",n:"-04"}}],["America/Marigot",{s:{f:"-0400",n:"AST"}}],["America/Martinique",{s:{f:"-0400",n:"AST"}}],["America/Matamoros",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Mazatlan",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Menominee",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Merida",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Metlakatla",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Mexico_City",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Miquelon",{s:{f:"-0200",t:"-0300",n:"-03",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Moncton",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Monterrey",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Montevideo",{s:{f:"-0300",n:"-03"}}],["America/Montserrat",{s:{f:"-0400",n:"AST"}}],["America/Nassau",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/New_York",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Nipigon",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Nome",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Noronha",{s:{f:"-0200",n:"-02"}}],["America/North_Dakota/Beulah",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/North_Dakota/Center",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/North_Dakota/New_Salem",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Ojinaga",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Panama",{s:{f:"-0500",n:"EST"}}],["America/Pangnirtung",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Paramaribo",{s:{f:"-0300",n:"-03"}}],["America/Phoenix",{s:{f:"-0700",n:"MST"}}],["America/Port_of_Spain",{s:{f:"-0400",n:"AST"}}],["America/Port-au-Prince",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Porto_Velho",{s:{f:"-0400",n:"-04"}}],["America/Puerto_Rico",{s:{f:"-0400",n:"AST"}}],["America/Punta_Arenas",{s:{f:"-0300",n:"-03"}}],["America/Rainy_River",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Rankin_Inlet",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Recife",{s:{f:"-0300",n:"-03"}}],["America/Regina",{s:{f:"-0600",n:"CST"}}],["America/Resolute",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Rio_Branco",{s:{f:"-0500",n:"-05"}}],["America/Santarem",{s:{f:"-0300",n:"-03"}}],["America/Santiago",{s:{f:"-0300",t:"-0400",n:"-04",s:"19700405T000000",r:{m:4,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19700906T000000",r:{m:9,d:"1SU"}}}],["America/Santo_Domingo",{s:{f:"-0400",n:"AST"}}],["America/Sao_Paulo",{s:{f:"-0300",n:"-03",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Scoresbysund",{s:{f:"+0000",t:"-0100",n:"-01",s:"19701025T010000",r:{m:10,d:"-1SU"}},d:{f:"-0100",t:"+0000",n:"+00",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["America/Sitka",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/St_Barthelemy",{s:{f:"-0400",n:"AST"}}],["America/St_Johns",{s:{f:"-0230",t:"-0330",n:"NST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0330",t:"-0230",n:"NDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/St_Kitts",{s:{f:"-0400",n:"AST"}}],["America/St_Lucia",{s:{f:"-0400",n:"AST"}}],["America/St_Thomas",{s:{f:"-0400",n:"AST"}}],["America/St_Vincent",{s:{f:"-0400",n:"AST"}}],["America/Swift_Current",{s:{f:"-0600",n:"CST"}}],["America/Tegucigalpa",{s:{f:"-0600",n:"CST"}}],["America/Thule",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Thunder_Bay",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Tijuana",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Toronto",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Tortola",{s:{f:"-0400",n:"AST"}}],["America/Vancouver",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Whitehorse",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Winnipeg",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Yakutat",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Yellowknife",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["Antarctica/Casey",{s:{f:"+0800",n:"+08"}}],["Antarctica/Davis",{s:{f:"+0700",n:"+07"}}],["Antarctica/DumontDUrville",{s:{f:"+1000",n:"+10"}}],["Antarctica/Macquarie",{s:{f:"+1100",n:"+11"}}],["Antarctica/Mawson",{s:{f:"+0500",n:"+05"}}],["Antarctica/McMurdo",{s:{f:"+1300",t:"+1200",n:"NZST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1200",t:"+1300",n:"NZDT",s:"19700927T020000",r:{m:9,d:"-1SU"}}}],["Antarctica/Palmer",{s:{f:"-0300",n:"-03"}}],["Antarctica/Rothera",{s:{f:"-0300",n:"-03"}}],["Antarctica/Syowa",{s:{f:"+0300",n:"+03"}}],["Antarctica/Troll",{s:{f:"+0200",t:"+0000",n:"+00",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0200",n:"+02",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Antarctica/Vostok",{s:{f:"+0600",n:"+06"}}],["Arctic/Longyearbyen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Asia/Aden",{s:{f:"+0300",n:"+03"}}],["Asia/Almaty",{s:{f:"+0600",n:"+06"}}],["Asia/Amman",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701030T010000",r:{m:10,d:"-1FR"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700326T235959",r:{m:3,d:"-1TH"}}}],["Asia/Anadyr",{s:{f:"+1200",n:"+12"}}],["Asia/Aqtau",{s:{f:"+0500",n:"+05"}}],["Asia/Aqtobe",{s:{f:"+0500",n:"+05"}}],["Asia/Ashgabat",{s:{f:"+0500",n:"+05"}}],["Asia/Atyrau",{s:{f:"+0500",n:"+05"}}],["Asia/Baghdad",{s:{f:"+0300",n:"+03"}}],["Asia/Bahrain",{s:{f:"+0300",n:"+03"}}],["Asia/Baku",{s:{f:"+0400",n:"+04"}}],["Asia/Bangkok",{s:{f:"+0700",n:"+07"}}],["Asia/Barnaul",{s:{f:"+0700",n:"+07"}}],["Asia/Beirut",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T000000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["Asia/Bishkek",{s:{f:"+0600",n:"+06"}}],["Asia/Brunei",{s:{f:"+0800",n:"+08"}}],["Asia/Chita",{s:{f:"+0900",n:"+09"}}],["Asia/Choibalsan",{s:{f:"+0800",n:"+08"}}],["Asia/Colombo",{s:{f:"+0530",n:"+0530"}}],["Asia/Damascus",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701030T000000",r:{m:10,d:"-1FR"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700327T000000",r:{m:3,d:"-1FR"}}}],["Asia/Dhaka",{s:{f:"+0600",n:"+06"}}],["Asia/Dili",{s:{f:"+0900",n:"+09"}}],["Asia/Dubai",{s:{f:"+0400",n:"+04"}}],["Asia/Dushanbe",{s:{f:"+0500",n:"+05"}}],["Asia/Famagusta",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Asia/Gaza",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701031T010000",r:{m:10,d:"-1SA"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700328T010000",r:{m:3,d:"4SA"}}}],["Asia/Hebron",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701031T010000",r:{m:10,d:"-1SA"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700328T010000",r:{m:3,d:"4SA"}}}],["Asia/Ho_Chi_Minh",{s:{f:"+0700",n:"+07"}}],["Asia/Hong_Kong",{s:{f:"+0800",n:"HKT"}}],["Asia/Hovd",{s:{f:"+0700",n:"+07"}}],["Asia/Irkutsk",{s:{f:"+0800",n:"+08"}}],["Asia/Istanbul",{s:{f:"+0300",n:"+03"}}],["Asia/Jakarta",{s:{f:"+0700",n:"WIB"}}],["Asia/Jayapura",{s:{f:"+0900",n:"WIT"}}],["Asia/Jerusalem",{s:{f:"+0300",t:"+0200",n:"IST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"IDT",s:"19700327T020000",r:{m:3,d:"-1FR"}}}],["Asia/Kabul",{s:{f:"+0430",n:"+0430"}}],["Asia/Kamchatka",{s:{f:"+1200",n:"+12"}}],["Asia/Karachi",{s:{f:"+0500",n:"PKT"}}],["Asia/Kathmandu",{s:{f:"+0545",n:"+0545"}}],["Asia/Khandyga",{s:{f:"+0900",n:"+09"}}],["Asia/Kolkata",{s:{f:"+0530",n:"IST"}}],["Asia/Krasnoyarsk",{s:{f:"+0700",n:"+07"}}],["Asia/Kuala_Lumpur",{s:{f:"+0800",n:"+08"}}],["Asia/Kuching",{s:{f:"+0800",n:"+08"}}],["Asia/Kuwait",{s:{f:"+0300",n:"+03"}}],["Asia/Macau",{s:{f:"+0800",n:"CST"}}],["Asia/Magadan",{s:{f:"+1100",n:"+11"}}],["Asia/Makassar",{s:{f:"+0800",n:"WITA"}}],["Asia/Manila",{s:{f:"+0800",n:"PST"}}],["Asia/Muscat",{s:{f:"+0400",n:"+04"}}],["Asia/Nicosia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Asia/Novokuznetsk",{s:{f:"+0700",n:"+07"}}],["Asia/Novosibirsk",{s:{f:"+0700",n:"+07"}}],["Asia/Omsk",{s:{f:"+0600",n:"+06"}}],["Asia/Oral",{s:{f:"+0500",n:"+05"}}],["Asia/Phnom_Penh",{s:{f:"+0700",n:"+07"}}],["Asia/Pontianak",{s:{f:"+0700",n:"WIB"}}],["Asia/Pyongyang",{s:{f:"+0900",n:"KST"}}],["Asia/Qatar",{s:{f:"+0300",n:"+03"}}],["Asia/Qyzylorda",{s:{f:"+0600",n:"+06"}}],["Asia/Riyadh",{s:{f:"+0300",n:"+03"}}],["Asia/Sakhalin",{s:{f:"+1100",n:"+11"}}],["Asia/Samarkand",{s:{f:"+0500",n:"+05"}}],["Asia/Seoul",{s:{f:"+0900",n:"KST"}}],["Asia/Shanghai",{s:{f:"+0800",n:"CST"}}],["Asia/Singapore",{s:{f:"+0800",n:"+08"}}],["Asia/Srednekolymsk",{s:{f:"+1100",n:"+11"}}],["Asia/Taipei",{s:{f:"+0800",n:"CST"}}],["Asia/Tashkent",{s:{f:"+0500",n:"+05"}}],["Asia/Tbilisi",{s:{f:"+0400",n:"+04"}}],["Asia/Tehran",{s:{f:"+0430",t:"+0330",n:"+0330",s:"19700921T000000",r:{m:9,d:"3SU"}},d:{f:"+0330",t:"+0430",n:"+0430",s:"19700321T000000",r:{m:3,d:"3SU"}}}],["Asia/Thimphu",{s:{f:"+0600",n:"+06"}}],["Asia/Tokyo",{s:{f:"+0900",n:"JST"}}],["Asia/Tomsk",{s:{f:"+0700",n:"+07"}}],["Asia/Ulaanbaatar",{s:{f:"+0800",n:"+08"}}],["Asia/Urumqi",{s:{f:"+0600",n:"+06"}}],["Asia/Ust-Nera",{s:{f:"+1000",n:"+10"}}],["Asia/Vientiane",{s:{f:"+0700",n:"+07"}}],["Asia/Vladivostok",{s:{f:"+1000",n:"+10"}}],["Asia/Yakutsk",{s:{f:"+0900",n:"+09"}}],["Asia/Yangon",{s:{f:"+0630",n:"+0630"}}],["Asia/Yekaterinburg",{s:{f:"+0500",n:"+05"}}],["Asia/Yerevan",{s:{f:"+0400",n:"+04"}}],["Atlantic/Azores",{s:{f:"+0000",t:"-0100",n:"-01",s:"19701025T010000",r:{m:10,d:"-1SU"}},d:{f:"-0100",t:"+0000",n:"+00",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["Atlantic/Bermuda",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["Atlantic/Canary",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Cape_Verde",{s:{f:"-0100",n:"-01"}}],["Atlantic/Faroe",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Madeira",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Reykjavik",{s:{f:"+0000",n:"GMT"}}],["Atlantic/South_Georgia",{s:{f:"-0200",n:"-02"}}],["Atlantic/St_Helena",{s:{f:"+0000",n:"GMT"}}],["Atlantic/Stanley",{s:{f:"-0300",n:"-03"}}],["Australia/Adelaide",{s:{f:"+1030",t:"+0930",n:"ACST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+0930",t:"+1030",n:"ACDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Brisbane",{s:{f:"+1000",n:"AEST"}}],["Australia/Broken_Hill",{s:{f:"+1030",t:"+0930",n:"ACST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+0930",t:"+1030",n:"ACDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Currie",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Darwin",{s:{f:"+0930",n:"ACST"}}],["Australia/Eucla",{s:{f:"+0845",n:"+0845"}}],["Australia/Hobart",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Lindeman",{s:{f:"+1000",n:"AEST"}}],["Australia/Lord_Howe",{s:{f:"+1100",t:"+1030",n:"+1030",s:"19700405T020000",r:{m:4,d:"1SU"}},d:{f:"+1030",t:"+1100",n:"+11",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Melbourne",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Perth",{s:{f:"+0800",n:"AWST"}}],["Australia/Sydney",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Etc/GMT-0",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT-1",{s:{f:"-0100",n:"-01"}}],["Etc/GMT-10",{s:{f:"-1000",n:"-10"}}],["Etc/GMT-11",{s:{f:"-1100",n:"-11"}}],["Etc/GMT-12",{s:{f:"-1200",n:"-12"}}],["Etc/GMT-2",{s:{f:"-0200",n:"-02"}}],["Etc/GMT-3",{s:{f:"-0300",n:"-03"}}],["Etc/GMT-4",{s:{f:"-0400",n:"-04"}}],["Etc/GMT-5",{s:{f:"-0500",n:"-05"}}],["Etc/GMT-6",{s:{f:"-0600",n:"-06"}}],["Etc/GMT-7",{s:{f:"-0700",n:"-07"}}],["Etc/GMT-8",{s:{f:"-0800",n:"-08"}}],["Etc/GMT-9",{s:{f:"-0900",n:"-09"}}],["Etc/GMT",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT+0",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT+1",{s:{f:"+0100",n:"+01"}}],["Etc/GMT+10",{s:{f:"+1000",n:"+10"}}],["Etc/GMT+11",{s:{f:"+1100",n:"+11"}}],["Etc/GMT+12",{s:{f:"+1200",n:"+12"}}],["Etc/GMT+13",{s:{f:"+1300",n:"+13"}}],["Etc/GMT+14",{s:{f:"+1400",n:"+14"}}],["Etc/GMT+2",{s:{f:"+0200",n:"+02"}}],["Etc/GMT+3",{s:{f:"+0300",n:"+03"}}],["Etc/GMT+4",{s:{f:"+0400",n:"+04"}}],["Etc/GMT+5",{s:{f:"+0500",n:"+05"}}],["Etc/GMT+6",{s:{f:"+0600",n:"+06"}}],["Etc/GMT+7",{s:{f:"+0700",n:"+07"}}],["Etc/GMT+8",{s:{f:"+0800",n:"+08"}}],["Etc/GMT+9",{s:{f:"+0900",n:"+09"}}],["Etc/GMT0",{s:{f:"+0000",n:"GMT"}}],["Etc/Greenwich",{s:{f:"+0000",n:"GMT"}}],["Etc/UCT",{s:{f:"+0000",n:"UCT"}}],["Etc/Universal",{s:{f:"+0000",n:"UTC"}}],["Etc/UTC",{s:{f:"+0000",n:"UTC"}}],["Etc/Zulu",{s:{f:"+0000",n:"UTC"}}],["Europe/Amsterdam",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Andorra",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Astrakhan",{s:{f:"+0400",n:"+04"}}],["Europe/Athens",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Belgrade",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Berlin",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Bratislava",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Brussels",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Bucharest",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Budapest",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Busingen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Chisinau",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Copenhagen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Dublin",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"IST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Gibraltar",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Guernsey",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Helsinki",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Isle_of_Man",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Istanbul",{s:{f:"+0300",n:"+03"}}],["Europe/Jersey",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Kaliningrad",{s:{f:"+0200",n:"EET"}}],["Europe/Kiev",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Kirov",{s:{f:"+0300",n:"+03"}}],["Europe/Lisbon",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Ljubljana",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/London",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Luxembourg",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Madrid",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Malta",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Mariehamn",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Minsk",{s:{f:"+0300",n:"+03"}}],["Europe/Monaco",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Moscow",{s:{f:"+0300",n:"MSK"}}],["Europe/Nicosia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Oslo",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Paris",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Podgorica",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Prague",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Riga",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Rome",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Samara",{s:{f:"+0400",n:"+04"}}],["Europe/San_Marino",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Sarajevo",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Saratov",{s:{f:"+0400",n:"+04"}}],["Europe/Simferopol",{s:{f:"+0300",n:"MSK"}}],["Europe/Skopje",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Sofia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Stockholm",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Tallinn",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Tirane",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Ulyanovsk",{s:{f:"+0400",n:"+04"}}],["Europe/Uzhgorod",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Vaduz",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vatican",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vienna",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vilnius",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Volgograd",{s:{f:"+0400",n:"+04"}}],["Europe/Warsaw",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Zagreb",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Zaporozhye",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Zurich",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Indian/Antananarivo",{s:{f:"+0300",n:"EAT"}}],["Indian/Chagos",{s:{f:"+0600",n:"+06"}}],["Indian/Christmas",{s:{f:"+0700",n:"+07"}}],["Indian/Cocos",{s:{f:"+0630",n:"+0630"}}],["Indian/Comoro",{s:{f:"+0300",n:"EAT"}}],["Indian/Kerguelen",{s:{f:"+0500",n:"+05"}}],["Indian/Mahe",{s:{f:"+0400",n:"+04"}}],["Indian/Maldives",{s:{f:"+0500",n:"+05"}}],["Indian/Mauritius",{s:{f:"+0400",n:"+04"}}],["Indian/Mayotte",{s:{f:"+0300",n:"EAT"}}],["Indian/Reunion",{s:{f:"+0400",n:"+04"}}],["Pacific/Apia",{s:{f:"+1400",t:"+1300",n:"+13",s:"19700405T040000",r:{m:4,d:"1SU"}},d:{f:"+1300",t:"+1400",n:"+14",s:"19700927T030000",r:{m:9,d:"-1SU"}}}],["Pacific/Auckland",{s:{f:"+1300",t:"+1200",n:"NZST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1200",t:"+1300",n:"NZDT",s:"19700927T020000",r:{m:9,d:"-1SU"}}}],["Pacific/Bougainville",{s:{f:"+1100",n:"+11"}}],["Pacific/Chatham",{s:{f:"+1345",t:"+1245",n:"+1245",s:"19700405T034500",r:{m:4,d:"1SU"}},d:{f:"+1245",t:"+1345",n:"+1345",s:"19700927T024500",r:{m:9,d:"-1SU"}}}],["Pacific/Chuuk",{s:{f:"+1000",n:"+10"}}],["Pacific/Easter",{s:{f:"-0500",t:"-0600",n:"-06",s:"19700404T220000",r:{m:4,d:"1SA"}},d:{f:"-0600",t:"-0500",n:"-05",s:"19700905T220000",r:{m:9,d:"1SA"}}}],["Pacific/Efate",{s:{f:"+1100",n:"+11"}}],["Pacific/Enderbury",{s:{f:"+1300",n:"+13"}}],["Pacific/Fakaofo",{s:{f:"+1300",n:"+13"}}],["Pacific/Fiji",{s:{f:"+1300",t:"+1200",n:"+12",s:"19700118T030000",r:{m:1,d:"-2SU"}},d:{f:"+1200",t:"+1300",n:"+13",s:"19701101T020000",r:{m:11,d:"1SU"}}}],["Pacific/Funafuti",{s:{f:"+1200",n:"+12"}}],["Pacific/Galapagos",{s:{f:"-0600",n:"-06"}}],["Pacific/Gambier",{s:{f:"-0900",n:"-09"}}],["Pacific/Guadalcanal",{s:{f:"+1100",n:"+11"}}],["Pacific/Guam",{s:{f:"+1000",n:"ChST"}}],["Pacific/Honolulu",{s:{f:"-1000",n:"HST"}}],["Pacific/Kiritimati",{s:{f:"+1400",n:"+14"}}],["Pacific/Kosrae",{s:{f:"+1100",n:"+11"}}],["Pacific/Kwajalein",{s:{f:"+1200",n:"+12"}}],["Pacific/Majuro",{s:{f:"+1200",n:"+12"}}],["Pacific/Marquesas",{s:{f:"-0930",n:"-0930"}}],["Pacific/Midway",{s:{f:"-1100",n:"SST"}}],["Pacific/Nauru",{s:{f:"+1200",n:"+12"}}],["Pacific/Niue",{s:{f:"-1100",n:"-11"}}],["Pacific/Norfolk",{s:{f:"+1100",n:"+11"}}],["Pacific/Noumea",{s:{f:"+1100",n:"+11"}}],["Pacific/Pago_Pago",{s:{f:"-1100",n:"SST"}}],["Pacific/Palau",{s:{f:"+0900",n:"+09"}}],["Pacific/Pitcairn",{s:{f:"-0800",n:"-08"}}],["Pacific/Pohnpei",{s:{f:"+1100",n:"+11"}}],["Pacific/Port_Moresby",{s:{f:"+1000",n:"+10"}}],["Pacific/Rarotonga",{s:{f:"-1000",n:"-10"}}],["Pacific/Saipan",{s:{f:"+1000",n:"ChST"}}],["Pacific/Tahiti",{s:{f:"-1000",n:"-10"}}],["Pacific/Tarawa",{s:{f:"+1200",n:"+12"}}],["Pacific/Tongatapu",{s:{f:"+1300",n:"+13"}}],["Pacific/Wake",{s:{f:"+1200",n:"+12"}}],["Pacific/Wallis",{s:{f:"+1200",n:"+12"}}]])},30980(t,e,n){var r=n(39344),a=n(94033);function i(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}i.prototype=r(a.prototype),i.prototype.constructor=i,t.exports=i},56017(t,e,n){var r=n(39344),a=n(94033);function i(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}i.prototype=r(a.prototype),i.prototype.constructor=i,t.exports=i},83729(t){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length;++n0&&i(c)?n>1?t(c,n-1,i,s,o):r(o,c):s||(o[o.length]=c)}return o}},47422(t,e,n){var r=n(31769),a=n(77797);t.exports=function(t,e){for(var n=0,i=(e=r(e,t)).length;null!=t&&n1&&U.reverse(),S&&T1?"& ":"")+n[a],n=n.join(r>2?", ":" "),t.replace(e,"{\n/* [wrapped with "+n+"] */\n")}},45891(t,e,n){var r=n(51873),a=n(72428),i=n(56449),s=r?r.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||a(t)||!!(s&&t&&t[s])}},28586(t,e,n){var r=n(56449),a=n(44394),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,s=/^\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!a(t))||s.test(t)||!i.test(t)||null!=e&&t in Object(e)}},85087(t,e,n){var r=n(30980),a=n(37381),i=n(62284),s=n(53758);t.exports=function(t){var e=i(t),n=s[e];if("function"!=typeof n||!(e in r.prototype))return!1;if(t===n)return!0;var o=a(n);return!!o&&t===o[0]}},30756(t,e,n){var r=n(23805);t.exports=function(t){return t==t&&!r(t)}},67197(t){t.exports=function(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in Object(n))}}},62224(t,e,n){var r=n(50104);t.exports=function(t){var e=r(t,function(t){return 500===n.size&&n.clear(),t}),n=e.cache;return e}},3209(t,e,n){var r=n(91596),a=n(53320),i=n(36306),s="__lodash_placeholder__",o=Math.min;t.exports=function(t,e){var n=t[1],l=e[1],d=n|l,c=d<131,u=128==l&&8==n||128==l&&256==n&&t[7].length<=e[8]||384==l&&e[7].length<=e[8]&&8==n;if(!c&&!u)return t;1&l&&(t[2]=e[2],d|=1&n?0:4);var h=e[3];if(h){var f=t[3];t[3]=f?r(f,h,e[4]):h,t[4]=f?i(t[3],s):e[4]}return(h=e[5])&&(f=t[5],t[5]=f?a(f,h,e[6]):h,t[6]=f?i(t[5],s):e[6]),(h=e[7])&&(t[7]=h),128&l&&(t[8]=null==t[8]?e[8]:o(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=d,t}},48152(t,e,n){var r=n(28303),a=r&&new r;t.exports=a},84629(t){t.exports={}},68294(t,e,n){var r=n(23007),a=n(30361),i=Math.min;t.exports=function(t,e){for(var n=t.length,s=i(e.length,n),o=r(t);s--;){var l=e[s];t[s]=a(l,n)?o[l]:void 0}return t}},36306(t){var e="__lodash_placeholder__";t.exports=function(t,n){for(var r=-1,a=t.length,i=0,s=[];++r2?e-2:1,r&&r<=e?n:s(n,e)):n}},mixin:function(t){return function(e){var n=this;if(!Y(n))return t(n,Object(e));var r=[];return U(M(e),function(t){Y(e[t])&&r.push([t,n.prototype[t]])}),t(n,Object(e)),U(r,function(t){var e=t[1];Y(e)?n.prototype[t[0]]=e:delete n.prototype[t[0]]}),n}},nthArg:function(t){return function(e){var n=e<0?1:k(e)+1;return x(t(e),n)}},rearg:function(t){return function(e,n){var r=n?n.length:0;return x(t(e,n),r)}},runInContext:function(n){return function(r){return t(e,n(r),c)}}};function z(t,e,n){if(p&&(S||!r.skipFixed[t])){var a=r.methodSpread[t],s=a&&a.start;return void 0===s?b(e,n):function(t,e){return function(){for(var n=arguments.length,r=n-1,a=Array(n);n--;)a[n]=arguments[n];var s=a[e],o=a.slice(0,e);return s&&i.apply(o,s),e!=r&&i.apply(o,a.slice(e+1)),t.apply(this,o)}}(e,s)}return e}function L(t,e,n){return y&&n>1&&(v||!r.skipRearg[t])?I(e,r.methodRearg[t]||r.aryRearg[n]):e}function W(t,e){for(var n=-1,r=(e=N(e)).length,a=r-1,i=D(Object(t)),s=i;null!=s&&++n1?x(e,n):e}(0,a=function(t,e){if(f){var n=r.iterateeRearg[t];if(n)return function(t,e){return F(t,function(t){var n=e.length;return function(t,e){return 2==e?function(e,n){return t.apply(void 0,arguments)}:function(e){return t.apply(void 0,arguments)}}(I(s(t,n),e),n)})}(e,n);var a=!u&&r.iterateeAry[t];if(a)return function(t,e){return F(t,function(t){return"function"==typeof t?s(t,e):t})}(e,a)}return e}(i,a),t),!1}}),!a}),a||(a=d),a==e&&(a=g?x(a,1):function(){return e.apply(this,arguments)}),a.convert=R(i,e),a.placeholder=e.placeholder=n,a}if(!h)return V(n,d,T);var H=d,K=[];return U(P,function(t){U(r.aryMethod[t],function(t){var e=H[r.remap[t]||t];e&&K.push([t,V(t,e,H)])})}),U(M(H),function(t){var e=H[t];if("function"==typeof e){for(var n=K.length;n--;)if(K[n][0]==t)return;e.convert=R(t,e),K.push([t,e])}}),U(K,function(t){H[t[0]]=t[1]}),H.convert=function(t){return H.runInContext.convert(t)(void 0)},H.placeholder=H,U(M(H),function(t){U(r.realToAlias[t]||[],function(e){H[e]=H[t]})}),H}},16962(t,e){e.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},e.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},e.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},e.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},e.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},e.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},e.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},e.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},e.realToAlias=function(){var t=Object.prototype.hasOwnProperty,n=e.aliasToReal,r={};for(var a in n){var i=n[a];t.call(r,i)?r[i].push(a):r[i]=[a]}return r}(),e.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},e.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},e.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},47934(t,e,n){t.exports={ary:n(64626),assign:n(74733),clone:n(32629),curry:n(49747),forEach:n(83729),isArray:n(56449),isError:n(23546),isFunction:n(1882),isWeakMap:n(47886),iteratee:n(33855),keys:n(88984),rearg:n(84195),toInteger:n(61489),toPath:n(42072)}},79920(t,e,n){var r=n(73424),a=n(47934);t.exports=function(t,e,n){return r(a,t,e,n)}},33455(t,e,n){var r=n(79920)("memoize",n(50104));r.placeholder=n(2874),t.exports=r},2874(t){t.exports={}},58156(t,e,n){var r=n(47422);t.exports=function(t,e,n){var a=null==t?void 0:r(t,e);return void 0===a?n:a}},80631(t,e,n){var r=n(28077),a=n(49326);t.exports=function(t,e){return null!=t&&a(t,e,r)}},23546(t,e,n){var r=n(72552),a=n(40346),i=n(11331);t.exports=function(t){if(!a(t))return!1;var e=r(t);return"[object Error]"==e||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!i(t)}},87730(t,e,n){var r=n(29172),a=n(27301),i=n(86009),s=i&&i.isMap,o=s?a(s):r;t.exports=o},38440(t,e,n){var r=n(16038),a=n(27301),i=n(86009),s=i&&i.isSet,o=s?a(s):r;t.exports=o},47886(t,e,n){var r=n(5861),a=n(40346);t.exports=function(t){return a(t)&&"[object WeakMap]"==r(t)}},33855(t,e,n){var r=n(9999),a=n(15389);t.exports=function(t){return a("function"==typeof t?t:r(t,1))}},50104(t,e,n){var r=n(53661);function a(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var r=arguments,a=e?e.apply(this,r):r[0],i=n.cache;if(i.has(a))return i.get(a);var s=t.apply(this,r);return n.cache=i.set(a,s)||i,s};return n.cache=new(a.Cache||r),n}a.Cache=r,t.exports=a},50583(t,e,n){var r=n(47237),a=n(17255),i=n(28586),s=n(77797);t.exports=function(t){return i(t)?r(s(t)):a(t)}},84195(t,e,n){var r=n(66977),a=n(38816)(function(t,e){return r(t,256,void 0,void 0,void 0,e)});t.exports=a},17400(t,e,n){var r=n(99374),a=1/0;t.exports=function(t){return t?(t=r(t))===a||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},61489(t,e,n){var r=n(17400);t.exports=function(t){var e=r(t),n=e%1;return e==e?n?e-n:e:0}},42072(t,e,n){var r=n(34932),a=n(23007),i=n(56449),s=n(44394),o=n(61802),l=n(77797),d=n(13222);t.exports=function(t){return i(t)?r(t,l):s(t)?[t]:a(o(d(t)))}},13222(t,e,n){var r=n(77556);t.exports=function(t){return null==t?"":r(t)}},53758(t,e,n){var r=n(30980),a=n(56017),i=n(94033),s=n(56449),o=n(40346),l=n(80257),d=Object.prototype.hasOwnProperty;function c(t){if(o(t)&&!s(t)&&!(t instanceof r)){if(t instanceof a)return t;if(d.call(t,"__wrapped__"))return l(t)}return new a(t)}c.prototype=i.prototype,c.prototype.constructor=c,t.exports=c},42634(){},63779(){},77199(){},59169(){},86833(){}},a={};function i(t){var e=a[t];if(void 0!==e)return e.exports;var n=a[t]={id:t,loaded:!1,exports:{}};return r[t].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=r,t=[],i.O=(e,n,r,a)=>{if(!n){var s=1/0;for(c=0;c=a)&&Object.keys(i.O).every(t=>i.O[t](n[l]))?n.splice(l--,1):(o=!1,a0&&t[c-1][2]>a;c--)t[c]=t[c-1];t[c]=[n,r,a]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce((e,n)=>(i.f[n](t,e),e),[])),i.u=t=>t+"-"+t+".js?v="+{1217:"1b1016b8e8417d8b50ab",1604:"6dd81d059d91ea002066",3464:"03f0e4a610987ac78bb3",6505:"903528d99b4acedb993d",6597:"73d39530ac866a7119c9",7859:"f9477f7bca078c643063",9054:"3025fae957c5f3990fea"}[t],i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),e={},n="nextcloud:",i.l=(t,r,a,s)=>{if(e[t])e[t].push(r);else{var o,l;if(void 0!==a)for(var d=document.getElementsByTagName("script"),c=0;c{o.onerror=o.onload=null,clearTimeout(f);var a=e[t];if(delete e[t],o.parentNode&&o.parentNode.removeChild(o),a&&a.forEach(t=>t(r)),n)return n(r)},f=setTimeout(h.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=h.bind(null,o.onerror),o.onload=h.bind(null,o.onload),l&&document.head.appendChild(o)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=3705,i.dn=t=>{(Object.getOwnPropertyDescriptor(t,"name")||{}).writable||Object.defineProperty(t,"name",{value:"default",configurable:!0})},(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!t||!/^http(s?):/.test(t));)t=n[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={3705:0};i.f.j=(e,n)=>{var r=i.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var a=new Promise((n,a)=>r=t[e]=[n,a]);n.push(r[2]=a);var s=i.p+i.u(e),o=new Error;i.l(s,n=>{if(i.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var a=n&&("load"===n.type?"missing":n.type),s=n&&n.target&&n.target.src;o.message="Loading chunk "+e+" failed.\n("+a+": "+s+")",o.name="ChunkLoadError",o.type=a,o.request=s,r[1](o)}},"chunk-"+e,e)}},i.O.j=e=>0===t[e];var e=(e,n)=>{var r,a,[s,o,l]=n,d=0;if(s.some(e=>0!==t[e])){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(l)var c=l(i)}for(e&&e(n);di(30748));s=i.O(s)})(); +//# sourceMappingURL=dav-settings-personal-availability.js.map?v=8cbeb2d5df0a16ad54b9 \ No newline at end of file diff --git a/dist/dav-settings-personal-availability.js.map b/dist/dav-settings-personal-availability.js.map index 679649ac539c2..3b81a2c877440 100644 --- a/dist/dav-settings-personal-availability.js.map +++ b/dist/dav-settings-personal-availability.js.map @@ -1 +1 @@ -{"version":3,"file":"dav-settings-personal-availability.js?v=6732e56fac4c078c4ce0","mappings":"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A1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,qBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,SAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,WAKA,CACA,iBACA,CACAd,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,uBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,sBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,qBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,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AA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,SAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,WAKA,CACA,aACA,CACAd,EAAA,CACAmqB,EAAA,QACA1V,EAAA,WAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,WAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,SAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,WAKA,CACA,oBACA,CACAd,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,qBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,QACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,QAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,QACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,UAKA,CACA,eACA,CACAd,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,WAIA,CACA,qBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,SAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,WAKA,CACA,mBACA,CACAd,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,QAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,UAKA,CACA,kBACA,CACAd,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,SAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,WAKA,CACA,sBACA,CACAd,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,SAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,WAKA,CACA,mBACA,CACAd,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,SAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,WAKA,CACA,qBACA,CACAd,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,yBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,qBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,qBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,QAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,UAKA,CACA,qBACA,CACAd,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,wBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,QAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,UAKA,CACA,mBACA,CACAd,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,QAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,UAKA,CACA,mBACA,CACAd,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,WAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,QAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,UAKA,CACA,qBACA,CACAd,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,sBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,QACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,QAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,UAKA,CACA,sBACA,CACAd,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,QAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,UAKA,CACA,kBACA,CACAd,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,QAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,UAKA,CACA,YACA,CACAd,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,UACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,WACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,UACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,UACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,WACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,SAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,WAKA,CACA,iBACA,CACAd,EAAA,CACAmqB,EA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AIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,qBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,WAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,uBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,E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,UACAC,QAAA,WACAC,MAAA,aACAC,QAAA,UACAC,OAAA,aAIAhe,EAAAmY,UAAiB,CACjB,GACA,gEACA,oEACA,0EACA,2EACA,wEACA,6BAEA,GACA,0EACA,iEACA,mEACA,sEACA,yEACA,yEACA,+DACA,iEACA,uEACA,mEACA,uEACA,wEACA,mEACA,yEACA,iEACA,wEACA,qEACA,wEACA,yEACA,uEACA,6DACA,iBAEA,GACA,oEACA,sEACA,2EACA,wEACA,iEACA,uEACA,+DACA,uEACA,qBAEA,GACA,gCAKAnY,EAAAkZ,SAAgB,CAChB,QACA,UACA,aAIAlZ,EAAA0a,YAAmB,CACnBuD,eAAA,EACAC,UAAA,EACAC,MAAA,EACA/6B,OAAA,EACAg7B,KAAA,EACAC,SAAA,EACAC,UAAA,EACAC,cAAA,EACAC,QAAA,EACAC,SAAA,EACAC,aAAA,EACAC,cAAA,EACAC,kBAAA,EACAC,YAAA,EACApY,QAAA,EACAqY,YAAA,EACAC,aAAA,EACAhjB,QAAA,EACAijB,aAAA,EACAC,MAAA,EACAC,WAAA,EACAC,OAAA,EACAC,YAAA,EACAv/C,IAAA,EACAw/C,QAAA,EACAC,UAAA,EACAC,UAAA,EACAp/C,OAAA,EACAq/C,YAAA,EACAC,OAAA,EACA/jC,OAAA,EACAgkC,KAAA,EACAC,eAAA,EACAC,UAAA,EACAC,MAAA,EACA9F,UAAA,GAIA/Z,EAAAwa,cAAqB,CACrB6E,QAAA,IACAG,YAAA,OAIAxf,EAAAiZ,YAAmB,CACnB6G,gBAAA,MACAC,aAAA,QACAC,cAAA,MACAC,WAAA,QACAC,aAAA,QACAC,eAAA,QACAC,MAAA,QACAC,eAAA,QACAC,iBAAA,QACAC,YAAA,QACAC,YAAA,QACAC,aAAA,MACAC,UAAA,QACAC,SAAA,QACAC,YAAA,QACAC,cAAA,QACAC,UAAA,QACAC,YAAA,QACAC,UAAA,QACAC,eAAA,QACAC,QAAA,UACAC,cAAA,QACAC,kBAAA,QACAC,QAAA,QACAC,UAAA,QACAC,WAAA,UACAC,MAAA,QACAC,QAAA,QACAC,QAAA,SAIA1hB,EAAA4Y,aAAoB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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/dav/src/utils/date.js","webpack:///nextcloud/apps/dav/src/service/logger.js","webpack:///nextcloud/apps/dav/src/components/AbsenceForm.vue","webpack:///nextcloud/apps/dav/src/components/AbsenceForm.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/dav/src/components/AbsenceForm.vue?6e01","webpack://nextcloud/./apps/dav/src/components/AbsenceForm.vue?0782","webpack://nextcloud/./apps/dav/src/components/AbsenceForm.vue?5b67","webpack:///nextcloud/apps/dav/src/components/AvailabilityForm.vue","webpack://nextcloud/./node_modules/@nextcloud/calendar-availability-vue/dist/assets/index-Ctj4Wyhb.css?d95b","webpack:///nextcloud/node_modules/ical.js/dist/ical.js","webpack:///nextcloud/node_modules/uuid/dist/esm-browser/native.js","webpack:///nextcloud/node_modules/uuid/dist/esm-browser/rng.js","webpack:///nextcloud/node_modules/uuid/dist/esm-browser/stringify.js","webpack:///nextcloud/node_modules/uuid/dist/esm-browser/v4.js","webpack:///nextcloud/node_modules/@nextcloud/calendar-availability-vue/dist/index.mjs","webpack:///nextcloud/apps/dav/src/dav/client.js","webpack:///nextcloud/apps/dav/src/components/AvailabilityForm.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/dav/src/service/CalendarService.js","webpack:///nextcloud/apps/dav/src/service/PreferenceService.js","webpack://nextcloud/./apps/dav/src/components/AvailabilityForm.vue?c140","webpack://nextcloud/./apps/dav/src/components/AvailabilityForm.vue?1bb2","webpack:///nextcloud/apps/dav/src/views/Availability.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/dav/src/views/Availability.vue","webpack://nextcloud/./apps/dav/src/views/Availability.vue?aa5a","webpack://nextcloud/./apps/dav/src/views/Availability.vue?4eb1","webpack:///nextcloud/apps/dav/src/settings-personal-availability.js","webpack:///nextcloud/node_modules/@nextcloud/calendar-availability-vue/dist/assets/index-Ctj4Wyhb.css","webpack:///nextcloud/apps/dav/src/components/AbsenceForm.vue?vue&type=style&index=0&id=7fe2e3cc&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/dav/src/components/AvailabilityForm.vue?vue&type=style&index=0&id=e0a387ae&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/icalzone/dist/index.js","webpack:///nextcloud/node_modules/icalzone/dist/zones.js","webpack:///nextcloud/node_modules/lodash/_LazyWrapper.js","webpack:///nextcloud/node_modules/lodash/_LodashWrapper.js","webpack:///nextcloud/node_modules/lodash/_arrayEach.js","webpack:///nextcloud/node_modules/lodash/_arrayMap.js","webpack:///nextcloud/node_modules/lodash/_baseAssign.js","webpack:///nextcloud/node_modules/lodash/_baseAssignIn.js","webpack:///nextcloud/node_modules/lodash/_baseClone.js","webpack:///nextcloud/node_modules/lodash/_baseFlatten.js","webpack:///nextcloud/node_modules/lodash/_baseGet.js","webpack:///nextcloud/node_modules/lodash/_baseHasIn.js","webpack:///nextcloud/node_modules/lodash/_baseIsMap.js","webpack:///nextcloud/node_modules/lodash/_baseIsMatch.js","webpack:///nextcloud/node_modules/lodash/_baseIsSet.js","webpack:///nextcloud/node_modules/lodash/_baseIteratee.js","webpack:///nextcloud/node_modules/lodash/_baseLodash.js","webpack:///nextcloud/node_modules/lodash/_baseMatches.js","webpack:///nextcloud/node_modules/lodash/_baseMatchesProperty.js","webpack:///nextcloud/node_modules/lodash/_baseProperty.js","webpack:///nextcloud/node_modules/lodash/_basePropertyDeep.js","webpack:///nextcloud/node_modules/lodash/_baseSetData.js","webpack:///nextcloud/node_modules/lodash/_baseToString.js","webpack:///nextcloud/node_modules/lodash/_castPath.js","webpack:///nextcloud/node_modules/lodash/_cloneDataView.js","webpack:///nextcloud/node_modules/lodash/_cloneRegExp.js","webpack:///nextcloud/node_modules/lodash/_cloneSymbol.js","webpack:///nextcloud/node_modules/lodash/_composeArgs.js","webpack:///nextcloud/node_modules/lodash/_composeArgsRight.js","webpack:///nextcloud/node_modules/lodash/_copySymbols.js","webpack:///nextcloud/node_modules/lodash/_copySymbolsIn.js","webpack:///nextcloud/node_modules/lodash/_countHolders.js","webpack:///nextcloud/node_modules/lodash/_createBind.js","webpack:///nextcloud/node_modules/lodash/_createCtor.js","webpack:///nextcloud/node_modules/lodash/_createCurry.js","webpack:///nextcloud/node_modules/lodash/_createHybrid.js","webpack:///nextcloud/node_modules/lodash/_createPartial.js","webpack:///nextcloud/node_modules/lodash/_createRecurry.js","webpack:///nextcloud/node_modules/lodash/_createWrap.js","webpack:///nextcloud/node_modules/lodash/_flatRest.js","webpack:///nextcloud/node_modules/lodash/_getAllKeysIn.js","webpack:///nextcloud/node_modules/lodash/_getData.js","webpack:///nextcloud/node_modules/lodash/_getFuncName.js","webpack:///nextcloud/node_modules/lodash/_getHolder.js","webpack:///nextcloud/node_modules/lodash/_getMatchData.js","webpack:///nextcloud/node_modules/lodash/_getSymbolsIn.js","webpack:///nextcloud/node_modules/lodash/_getWrapDetails.js","webpack:///nextcloud/node_modules/lodash/_hasPath.js","webpack:///nextcloud/node_modules/lodash/_initCloneArray.js","webpack:///nextcloud/node_modules/lodash/_initCloneByTag.js","webpack:///nextcloud/node_modules/lodash/_insertWrapDetails.js","webpack:///nextcloud/node_modules/lodash/_isFlattenable.js","webpack:///nextcloud/node_modules/lodash/_isKey.js","webpack:///nextcloud/node_modules/lodash/_isLaziable.js","webpack:///nextcloud/node_modules/lodash/_isStrictComparable.js","webpack:///nextcloud/node_modules/lodash/_matchesStrictComparable.js","webpack:///nextcloud/node_modules/lodash/_memoizeCapped.js","webpack:///nextcloud/node_modules/lodash/_mergeData.js","webpack:///nextcloud/node_modules/lodash/_metaMap.js","webpack:///nextcloud/node_modules/lodash/_realNames.js","webpack:///nextcloud/node_modules/lodash/_reorder.js","webpack:///nextcloud/node_modules/lodash/_replaceHolders.js","webpack:///nextcloud/node_modules/lodash/_setData.js","webpack:///nextcloud/node_modules/lodash/_setWrapToString.js","webpack:///nextcloud/node_modules/lodash/_stringToPath.js","webpack:///nextcloud/node_modules/lodash/_toKey.js","webpack:///nextcloud/node_modules/lodash/_updateWrapDetails.js","webpack:///nextcloud/node_modules/lodash/_wrapperClone.js","webpack:///nextcloud/node_modules/lodash/ary.js","webpack:///nextcloud/node_modules/lodash/clone.js","webpack:///nextcloud/node_modules/lodash/curry.js","webpack:///nextcloud/node_modules/lodash/flatten.js","webpack:///nextcloud/node_modules/lodash/fp/_baseConvert.js","webpack:///nextcloud/node_modules/lodash/fp/_mapping.js","webpack:///nextcloud/node_modules/lodash/fp/_util.js","webpack:///nextcloud/node_modules/lodash/fp/convert.js","webpack:///nextcloud/node_modules/lodash/fp/memoize.js","webpack:///nextcloud/node_modules/lodash/fp/placeholder.js","webpack:///nextcloud/node_modules/lodash/get.js","webpack:///nextcloud/node_modules/lodash/hasIn.js","webpack:///nextcloud/node_modules/lodash/isError.js","webpack:///nextcloud/node_modules/lodash/isMap.js","webpack:///nextcloud/node_modules/lodash/isSet.js","webpack:///nextcloud/node_modules/lodash/isWeakMap.js","webpack:///nextcloud/node_modules/lodash/iteratee.js","webpack:///nextcloud/node_modules/lodash/memoize.js","webpack:///nextcloud/node_modules/lodash/property.js","webpack:///nextcloud/node_modules/lodash/rearg.js","webpack:///nextcloud/node_modules/lodash/toFinite.js","webpack:///nextcloud/node_modules/lodash/toInteger.js","webpack:///nextcloud/node_modules/lodash/toPath.js","webpack:///nextcloud/node_modules/lodash/toString.js","webpack:///nextcloud/node_modules/lodash/wrapperLodash.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/set anonymous default export name","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Format a date as 'YYYY-MM-DD'.\n *\n * @param {Date} date A date instance to format.\n * @return {string} 'YYYY-MM-DD'\n */\nexport function formatDateAsYMD(date) {\n\tconst year = date.getFullYear()\n\tconst month = (date.getMonth() + 1).toString().padStart(2, '0')\n\tconst day = date.getDate().toString().padStart(2, '0')\n\treturn `${year}-${month}-${day}`\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst logger = getLoggerBuilder()\n\t.setApp('dav')\n\t.detectUser()\n\t.build()\n\nexport default logger\n","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AbsenceForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AbsenceForm.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AbsenceForm.vue?vue&type=style&index=0&id=7fe2e3cc&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AbsenceForm.vue?vue&type=style&index=0&id=7fe2e3cc&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AbsenceForm.vue?vue&type=template&id=7fe2e3cc&scoped=true\"\nimport script from \"./AbsenceForm.vue?vue&type=script&lang=js\"\nexport * from \"./AbsenceForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./AbsenceForm.vue?vue&type=style&index=0&id=7fe2e3cc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7fe2e3cc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{staticClass:\"absence\",on:{\"submit\":function($event){$event.preventDefault();return _vm.saveForm.apply(null, arguments)}}},[_c('div',{staticClass:\"absence__dates\"},[_c('NcDateTimePickerNative',{staticClass:\"absence__dates__picker\",attrs:{\"id\":\"absence-first-day\",\"label\":_vm.$t('dav', 'First day'),\"required\":true},model:{value:(_vm.firstDay),callback:function ($$v) {_vm.firstDay=$$v},expression:\"firstDay\"}}),_vm._v(\" \"),_c('NcDateTimePickerNative',{staticClass:\"absence__dates__picker\",attrs:{\"id\":\"absence-last-day\",\"label\":_vm.$t('dav', 'Last day (inclusive)'),\"required\":true},model:{value:(_vm.lastDay),callback:function ($$v) {_vm.lastDay=$$v},expression:\"lastDay\"}})],1),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"replacement-search-input\"}},[_vm._v(_vm._s(_vm.$t('dav', 'Out of office replacement (optional)')))]),_vm._v(\" \"),_c('NcSelect',{ref:\"select\",attrs:{\"input-id\":\"replacement-search-input\",\"loading\":_vm.searchLoading,\"placeholder\":_vm.$t('dav', 'Name of the replacement'),\"clear-search-on-blur\":() => false,\"user-select\":true,\"options\":_vm.options},on:{\"search\":_vm.asyncFind},scopedSlots:_vm._u([{key:\"no-options\",fn:function({ search }){return [_vm._v(\"\\n\\t\\t\\t\"+_vm._s(search ?_vm.$t('dav', 'No results.') : _vm.$t('dav', 'Start typing.'))+\"\\n\\t\\t\")]}}]),model:{value:(_vm.replacementUser),callback:function ($$v) {_vm.replacementUser=$$v},expression:\"replacementUser\"}}),_vm._v(\" \"),_c('NcTextField',{attrs:{\"value\":_vm.status,\"label\":_vm.$t('dav', 'Short absence status'),\"required\":true},on:{\"update:value\":function($event){_vm.status=$event}}}),_vm._v(\" \"),_c('NcTextArea',{attrs:{\"value\":_vm.message,\"label\":_vm.$t('dav', 'Long absence Message'),\"required\":true},on:{\"update:value\":function($event){_vm.message=$event}}}),_vm._v(\" \"),_c('div',{staticClass:\"absence__buttons\"},[_c('NcButton',{attrs:{\"disabled\":_vm.loading || !_vm.valid,\"type\":\"primary\",\"native-type\":\"submit\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Save'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"disabled\":_vm.loading || !_vm.valid,\"type\":\"error\"},on:{\"click\":_vm.clearAbsence}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Disable absence'))+\"\\n\\t\\t\")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c(_setup.CalendarAvailability,{attrs:{\"slots\":_setup.slots,\"loading\":_setup.loading,\"l10n-to\":_setup.t('dav', 'to'),\"l10n-delete-slot\":_setup.t('dav', 'Delete slot'),\"l10n-empty-day\":_setup.t('dav', 'No working hours set'),\"l10n-add-slot\":_setup.t('dav', 'Add slot'),\"l10n-week-day-list-label\":_setup.t('dav', 'Weekdays'),\"l10n-monday\":_setup.t('dav', 'Monday'),\"l10n-tuesday\":_setup.t('dav', 'Tuesday'),\"l10n-wednesday\":_setup.t('dav', 'Wednesday'),\"l10n-thursday\":_setup.t('dav', 'Thursday'),\"l10n-friday\":_setup.t('dav', 'Friday'),\"l10n-saturday\":_setup.t('dav', 'Saturday'),\"l10n-sunday\":_setup.t('dav', 'Sunday'),\"l10n-start-picker-label\":(dayName) => _setup.t('dav', 'Pick a start time for {dayName}', { dayName }),\"l10n-end-picker-label\":(dayName) => _setup.t('dav', 'Pick a end time for {dayName}', { dayName })},on:{\"update:slots\":function($event){_setup.slots=$event}}}),_vm._v(\" \"),_c(_setup.NcCheckboxRadioSwitch,{model:{value:(_setup.automated),callback:function ($$v) {_setup.automated=$$v},expression:\"automated\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_setup.t('dav', 'Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications.'))+\"\\n\\t\")]),_vm._v(\" \"),_c(_setup.NcButton,{attrs:{\"disabled\":_setup.loading || _setup.saving,\"variant\":\"primary\"},on:{\"click\":_setup.save}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_setup.t('dav', 'Save'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./index-Ctj4Wyhb.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./index-Ctj4Wyhb.css\";\n export default content && content.locals ? content.locals : undefined;\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n/**\n * Represents the BINARY value type, which contains extra methods for encoding and decoding.\n *\n * @memberof ICAL\n */\nclass Binary {\n /**\n * Creates a binary value from the given string.\n *\n * @param {String} aString The binary value string\n * @return {Binary} The binary value instance\n */\n static fromString(aString) {\n return new Binary(aString);\n }\n\n /**\n * Creates a new ICAL.Binary instance\n *\n * @param {String} aValue The binary data for this value\n */\n constructor(aValue) {\n this.value = aValue;\n }\n\n /**\n * The type name, to be used in the jCal object.\n * @default \"binary\"\n * @constant\n */\n icaltype = \"binary\";\n\n /**\n * Base64 decode the current value\n *\n * @return {String} The base64-decoded value\n */\n decodeValue() {\n return this._b64_decode(this.value);\n }\n\n /**\n * Encodes the passed parameter with base64 and sets the internal\n * value to the result.\n *\n * @param {String} aValue The raw binary value to encode\n */\n setEncodedValue(aValue) {\n this.value = this._b64_encode(aValue);\n }\n\n _b64_encode(data) {\n // http://kevin.vanzonneveld.net\n // + original by: Tyler Akins (http://rumkin.com)\n // + improved by: Bayron Guevara\n // + improved by: Thunder.m\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfixed by: Pellentesque Malesuada\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + improved by: Rafał Kukawski (http://kukawski.pl)\n // * example 1: base64_encode('Kevin van Zonneveld');\n // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='\n // mozilla has this native\n // - but breaks in 2.0.0.12!\n //if (typeof this.window['atob'] == 'function') {\n // return atob(data);\n //}\n let b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\" +\n \"abcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n enc = \"\",\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1 << 16 | o2 << 8 | o3;\n\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n let r = data.length % 3;\n\n return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);\n\n }\n\n _b64_decode(data) {\n // http://kevin.vanzonneveld.net\n // + original by: Tyler Akins (http://rumkin.com)\n // + improved by: Thunder.m\n // + input by: Aman Gupta\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfixed by: Onno Marsman\n // + bugfixed by: Pellentesque Malesuada\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + input by: Brett Zamir (http://brett-zamir.me)\n // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');\n // * returns 1: 'Kevin van Zonneveld'\n // mozilla has this native\n // - but breaks in 2.0.0.12!\n //if (typeof this.window['btoa'] == 'function') {\n // return btoa(data);\n //}\n let b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\" +\n \"abcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n dec = \"\",\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data += '';\n\n do { // unpack four hexets into three octets using index points in b64\n h1 = b64.indexOf(data.charAt(i++));\n h2 = b64.indexOf(data.charAt(i++));\n h3 = b64.indexOf(data.charAt(i++));\n h4 = b64.indexOf(data.charAt(i++));\n\n bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;\n\n o1 = bits >> 16 & 0xff;\n o2 = bits >> 8 & 0xff;\n o3 = bits & 0xff;\n\n if (h3 == 64) {\n tmp_arr[ac++] = String.fromCharCode(o1);\n } else if (h4 == 64) {\n tmp_arr[ac++] = String.fromCharCode(o1, o2);\n } else {\n tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);\n }\n } while (i < data.length);\n\n dec = tmp_arr.join('');\n\n return dec;\n }\n\n /**\n * The string representation of this value\n * @return {String}\n */\n toString() {\n return this.value;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nconst DURATION_LETTERS = /([PDWHMTS]{1,1})/;\nconst DATA_PROPS_TO_COPY = [\"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"isNegative\"];\n\n/**\n * This class represents the \"duration\" value type, with various calculation\n * and manipulation methods.\n *\n * @memberof ICAL\n */\nclass Duration {\n /**\n * Returns a new ICAL.Duration instance from the passed seconds value.\n *\n * @param {Number} aSeconds The seconds to create the instance from\n * @return {Duration} The newly created duration instance\n */\n static fromSeconds(aSeconds) {\n return (new Duration()).fromSeconds(aSeconds);\n }\n\n /**\n * Checks if the given string is an iCalendar duration value.\n *\n * @param {String} value The raw ical value\n * @return {Boolean} True, if the given value is of the\n * duration ical type\n */\n static isValueString(string) {\n return (string[0] === 'P' || string[1] === 'P');\n }\n\n /**\n * Creates a new {@link ICAL.Duration} instance from the passed string.\n *\n * @param {String} aStr The string to parse\n * @return {Duration} The created duration instance\n */\n static fromString(aStr) {\n let pos = 0;\n let dict = Object.create(null);\n let chunks = 0;\n\n while ((pos = aStr.search(DURATION_LETTERS)) !== -1) {\n let type = aStr[pos];\n let numeric = aStr.slice(0, Math.max(0, pos));\n aStr = aStr.slice(pos + 1);\n\n chunks += parseDurationChunk(type, numeric, dict);\n }\n\n if (chunks < 2) {\n // There must be at least a chunk with \"P\" and some unit chunk\n throw new Error(\n 'invalid duration value: Not enough duration components in \"' + aStr + '\"'\n );\n }\n\n return new Duration(dict);\n }\n\n /**\n * Creates a new ICAL.Duration instance from the given data object.\n *\n * @param {Object} aData An object with members of the duration\n * @param {Number=} aData.weeks Duration in weeks\n * @param {Number=} aData.days Duration in days\n * @param {Number=} aData.hours Duration in hours\n * @param {Number=} aData.minutes Duration in minutes\n * @param {Number=} aData.seconds Duration in seconds\n * @param {Boolean=} aData.isNegative If true, the duration is negative\n * @return {Duration} The createad duration instance\n */\n static fromData(aData) {\n return new Duration(aData);\n }\n\n /**\n * Creates a new ICAL.Duration instance.\n *\n * @param {Object} data An object with members of the duration\n * @param {Number=} data.weeks Duration in weeks\n * @param {Number=} data.days Duration in days\n * @param {Number=} data.hours Duration in hours\n * @param {Number=} data.minutes Duration in minutes\n * @param {Number=} data.seconds Duration in seconds\n * @param {Boolean=} data.isNegative If true, the duration is negative\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.fromData(data);\n }\n\n /**\n * The weeks in this duration\n * @type {Number}\n * @default 0\n */\n weeks = 0;\n\n /**\n * The days in this duration\n * @type {Number}\n * @default 0\n */\n days = 0;\n\n /**\n * The days in this duration\n * @type {Number}\n * @default 0\n */\n hours = 0;\n\n /**\n * The minutes in this duration\n * @type {Number}\n * @default 0\n */\n minutes = 0;\n\n /**\n * The seconds in this duration\n * @type {Number}\n * @default 0\n */\n seconds = 0;\n\n /**\n * The seconds in this duration\n * @type {Boolean}\n * @default false\n */\n isNegative = false;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalduration\"\n */\n icalclass = \"icalduration\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"duration\"\n */\n icaltype = \"duration\";\n\n /**\n * Returns a clone of the duration object.\n *\n * @return {Duration} The cloned object\n */\n clone() {\n return Duration.fromData(this);\n }\n\n /**\n * The duration value expressed as a number of seconds.\n *\n * @return {Number} The duration value in seconds\n */\n toSeconds() {\n let seconds = this.seconds + 60 * this.minutes + 3600 * this.hours +\n 86400 * this.days + 7 * 86400 * this.weeks;\n return (this.isNegative ? -seconds : seconds);\n }\n\n /**\n * Reads the passed seconds value into this duration object. Afterwards,\n * members like {@link ICAL.Duration#days days} and {@link ICAL.Duration#weeks weeks} will be set up\n * accordingly.\n *\n * @param {Number} aSeconds The duration value in seconds\n * @return {Duration} Returns this instance\n */\n fromSeconds(aSeconds) {\n let secs = Math.abs(aSeconds);\n\n this.isNegative = (aSeconds < 0);\n this.days = trunc(secs / 86400);\n\n // If we have a flat number of weeks, use them.\n if (this.days % 7 == 0) {\n this.weeks = this.days / 7;\n this.days = 0;\n } else {\n this.weeks = 0;\n }\n\n secs -= (this.days + 7 * this.weeks) * 86400;\n\n this.hours = trunc(secs / 3600);\n secs -= this.hours * 3600;\n\n this.minutes = trunc(secs / 60);\n secs -= this.minutes * 60;\n\n this.seconds = secs;\n return this;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} aData An object with members of the duration\n * @param {Number=} aData.weeks Duration in weeks\n * @param {Number=} aData.days Duration in days\n * @param {Number=} aData.hours Duration in hours\n * @param {Number=} aData.minutes Duration in minutes\n * @param {Number=} aData.seconds Duration in seconds\n * @param {Boolean=} aData.isNegative If true, the duration is negative\n */\n fromData(aData) {\n for (let prop of DATA_PROPS_TO_COPY) {\n if (aData && prop in aData) {\n this[prop] = aData[prop];\n } else {\n this[prop] = 0;\n }\n }\n }\n\n /**\n * Resets the duration instance to the default values, i.e. PT0S\n */\n reset() {\n this.isNegative = false;\n this.weeks = 0;\n this.days = 0;\n this.hours = 0;\n this.minutes = 0;\n this.seconds = 0;\n }\n\n /**\n * Compares the duration instance with another one.\n *\n * @param {Duration} aOther The instance to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(aOther) {\n let thisSeconds = this.toSeconds();\n let otherSeconds = aOther.toSeconds();\n return (thisSeconds > otherSeconds) - (thisSeconds < otherSeconds);\n }\n\n /**\n * Normalizes the duration instance. For example, a duration with a value\n * of 61 seconds will be normalized to 1 minute and 1 second.\n */\n normalize() {\n this.fromSeconds(this.toSeconds());\n }\n\n /**\n * The string representation of this duration.\n * @return {String}\n */\n toString() {\n if (this.toSeconds() == 0) {\n return \"PT0S\";\n } else {\n let str = \"\";\n if (this.isNegative) str += \"-\";\n str += \"P\";\n let hasWeeks = false;\n if (this.weeks) {\n if (this.days || this.hours || this.minutes || this.seconds) {\n str += (this.weeks * 7 + this.days) + \"D\";\n } else {\n str += (this.weeks + \"W\");\n hasWeeks = true;\n }\n } else if (this.days) {\n str += (this.days + \"D\");\n }\n\n if (!hasWeeks) {\n if (this.hours || this.minutes || this.seconds) {\n str += \"T\";\n if (this.hours) {\n str += this.hours + \"H\";\n }\n\n if (this.minutes) {\n str += this.minutes + \"M\";\n }\n\n if (this.seconds) {\n str += this.seconds + \"S\";\n }\n }\n }\n\n return str;\n }\n }\n\n /**\n * The iCalendar string representation of this duration.\n * @return {String}\n */\n toICALString() {\n return this.toString();\n }\n}\n\n/**\n * Internal helper function to handle a chunk of a duration.\n *\n * @private\n * @param {String} letter type of duration chunk\n * @param {String} number numeric value or -/+\n * @param {Object} dict target to assign values to\n */\nfunction parseDurationChunk(letter, number, object) {\n let type;\n switch (letter) {\n case 'P':\n if (number && number === '-') {\n object.isNegative = true;\n } else {\n object.isNegative = false;\n }\n // period\n break;\n case 'D':\n type = 'days';\n break;\n case 'W':\n type = 'weeks';\n break;\n case 'H':\n type = 'hours';\n break;\n case 'M':\n type = 'minutes';\n break;\n case 'S':\n type = 'seconds';\n break;\n default:\n // Not a valid chunk\n return 0;\n }\n\n if (type) {\n if (!number && number !== 0) {\n throw new Error(\n 'invalid duration value: Missing number before \"' + letter + '\"'\n );\n }\n let num = parseInt(number, 10);\n if (isStrictlyNaN(num)) {\n throw new Error(\n 'invalid duration value: Invalid number \"' + number + '\" before \"' + letter + '\"'\n );\n }\n object[type] = num;\n }\n\n return 1;\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").jCalComponent} jCalComponent\n * Imports the 'occurrenceDetails' type from the \"types.js\" module\n */\n\n/**\n * This class represents the \"period\" value type, with various calculation and manipulation methods.\n *\n * @memberof ICAL\n */\nclass Period {\n /**\n * Creates a new {@link ICAL.Period} instance from the passed string.\n *\n * @param {String} str The string to parse\n * @param {Property} prop The property this period will be on\n * @return {Period} The created period instance\n */\n static fromString(str, prop) {\n let parts = str.split('/');\n\n if (parts.length !== 2) {\n throw new Error(\n 'Invalid string value: \"' + str + '\" must contain a \"/\" char.'\n );\n }\n\n let options = {\n start: Time.fromDateTimeString(parts[0], prop)\n };\n\n let end = parts[1];\n\n if (Duration.isValueString(end)) {\n options.duration = Duration.fromString(end);\n } else {\n options.end = Time.fromDateTimeString(end, prop);\n }\n\n return new Period(options);\n }\n\n /**\n * Creates a new {@link ICAL.Period} instance from the given data object.\n * The passed data object cannot contain both and end date and a duration.\n *\n * @param {Object} aData An object with members of the period\n * @param {Time=} aData.start The start of the period\n * @param {Time=} aData.end The end of the period\n * @param {Duration=} aData.duration The duration of the period\n * @return {Period} The period instance\n */\n static fromData(aData) {\n return new Period(aData);\n }\n\n /**\n * Returns a new period instance from the given jCal data array. The first\n * member is always the start date string, the second member is either a\n * duration or end date string.\n *\n * @param {jCalComponent} aData The jCal data array\n * @param {Property} aProp The property this jCal data is on\n * @param {Boolean} aLenient If true, data value can be both date and date-time\n * @return {Period} The period instance\n */\n static fromJSON(aData, aProp, aLenient) {\n function fromDateOrDateTimeString(aValue, dateProp) {\n if (aLenient) {\n return Time.fromString(aValue, dateProp);\n } else {\n return Time.fromDateTimeString(aValue, dateProp);\n }\n }\n\n if (Duration.isValueString(aData[1])) {\n return Period.fromData({\n start: fromDateOrDateTimeString(aData[0], aProp),\n duration: Duration.fromString(aData[1])\n });\n } else {\n return Period.fromData({\n start: fromDateOrDateTimeString(aData[0], aProp),\n end: fromDateOrDateTimeString(aData[1], aProp)\n });\n }\n }\n\n /**\n * Creates a new ICAL.Period instance. The passed data object cannot contain both and end date and\n * a duration.\n *\n * @param {Object} aData An object with members of the period\n * @param {Time=} aData.start The start of the period\n * @param {Time=} aData.end The end of the period\n * @param {Duration=} aData.duration The duration of the period\n */\n constructor(aData) {\n this.wrappedJSObject = this;\n\n if (aData && 'start' in aData) {\n if (aData.start && !(aData.start instanceof Time)) {\n throw new TypeError('.start must be an instance of ICAL.Time');\n }\n this.start = aData.start;\n }\n\n if (aData && aData.end && aData.duration) {\n throw new Error('cannot accept both end and duration');\n }\n\n if (aData && 'end' in aData) {\n if (aData.end && !(aData.end instanceof Time)) {\n throw new TypeError('.end must be an instance of ICAL.Time');\n }\n this.end = aData.end;\n }\n\n if (aData && 'duration' in aData) {\n if (aData.duration && !(aData.duration instanceof Duration)) {\n throw new TypeError('.duration must be an instance of ICAL.Duration');\n }\n this.duration = aData.duration;\n }\n }\n\n\n /**\n * The start of the period\n * @type {Time}\n */\n start = null;\n\n /**\n * The end of the period\n * @type {Time}\n */\n end = null;\n\n /**\n * The duration of the period\n * @type {Duration}\n */\n duration = null;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalperiod\"\n */\n icalclass = \"icalperiod\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"period\"\n */\n icaltype = \"period\";\n\n /**\n * Returns a clone of the duration object.\n *\n * @return {Period} The cloned object\n */\n clone() {\n return Period.fromData({\n start: this.start ? this.start.clone() : null,\n end: this.end ? this.end.clone() : null,\n duration: this.duration ? this.duration.clone() : null\n });\n }\n\n /**\n * Calculates the duration of the period, either directly or by subtracting\n * start from end date.\n *\n * @return {Duration} The calculated duration\n */\n getDuration() {\n if (this.duration) {\n return this.duration;\n } else {\n return this.end.subtractDate(this.start);\n }\n }\n\n /**\n * Calculates the end date of the period, either directly or by adding\n * duration to start date.\n *\n * @return {Time} The calculated end date\n */\n getEnd() {\n if (this.end) {\n return this.end;\n } else {\n let end = this.start.clone();\n end.addDuration(this.duration);\n return end;\n }\n }\n\n /**\n * Compare this period with a date or other period. To maintain the logic where a.compare(b)\n * returns 1 when a > b, this function will return 1 when the period is after the date, 0 when the\n * date is within the period, and -1 when the period is before the date. When comparing two\n * periods, as soon as they overlap in any way this will return 0.\n *\n * @param {Time|Period} dt The date or other period to compare with\n */\n compare(dt) {\n if (dt.compare(this.start) < 0) {\n return 1;\n } else if (dt.compare(this.getEnd()) > 0) {\n return -1;\n } else {\n return 0;\n }\n }\n\n /**\n * The string representation of this period.\n * @return {String}\n */\n toString() {\n return this.start + \"/\" + (this.end || this.duration);\n }\n\n /**\n * The jCal representation of this period type.\n * @return {Object}\n */\n toJSON() {\n return [this.start.toString(), (this.end || this.duration).toString()];\n }\n\n /**\n * The iCalendar string representation of this period.\n * @return {String}\n */\n toICALString() {\n return this.start.toICALString() + \"/\" +\n (this.end || this.duration).toICALString();\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n *\n * @ignore\n * @typedef {import(\"./types.js\").timeInit} timeInit\n * Imports the 'timeInit' type from the \"types.js\" module\n */\n\n/**\n * @classdesc\n * iCalendar Time representation (similar to JS Date object). Fully\n * independent of system (OS) timezone / time. Unlike JS Date, the month\n * January is 1, not zero.\n *\n * @example\n * var time = new ICAL.Time({\n * year: 2012,\n * month: 10,\n * day: 11\n * minute: 0,\n * second: 0,\n * isDate: false\n * });\n *\n *\n * @memberof ICAL\n*/\nclass Time {\n static _dowCache = {};\n static _wnCache = {};\n\n /**\n * Returns the days in the given month\n *\n * @param {Number} month The month to check\n * @param {Number} year The year to check\n * @return {Number} The number of days in the month\n */\n static daysInMonth(month, year) {\n let _daysInMonth = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n let days = 30;\n\n if (month < 1 || month > 12) return days;\n\n days = _daysInMonth[month];\n\n if (month == 2) {\n days += Time.isLeapYear(year);\n }\n\n return days;\n }\n\n /**\n * Checks if the year is a leap year\n *\n * @param {Number} year The year to check\n * @return {Boolean} True, if the year is a leap year\n */\n static isLeapYear(year) {\n if (year <= 1752) {\n return ((year % 4) == 0);\n } else {\n return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));\n }\n }\n\n /**\n * Create a new ICAL.Time from the day of year and year. The date is returned\n * in floating timezone.\n *\n * @param {Number} aDayOfYear The day of year\n * @param {Number} aYear The year to create the instance in\n * @return {Time} The created instance with the calculated date\n */\n static fromDayOfYear(aDayOfYear, aYear) {\n let year = aYear;\n let doy = aDayOfYear;\n let tt = new Time();\n tt.auto_normalize = false;\n let is_leap = (Time.isLeapYear(year) ? 1 : 0);\n\n if (doy < 1) {\n year--;\n is_leap = (Time.isLeapYear(year) ? 1 : 0);\n doy += Time.daysInYearPassedMonth[is_leap][12];\n return Time.fromDayOfYear(doy, year);\n } else if (doy > Time.daysInYearPassedMonth[is_leap][12]) {\n is_leap = (Time.isLeapYear(year) ? 1 : 0);\n doy -= Time.daysInYearPassedMonth[is_leap][12];\n year++;\n return Time.fromDayOfYear(doy, year);\n }\n\n tt.year = year;\n tt.isDate = true;\n\n for (let month = 11; month >= 0; month--) {\n if (doy > Time.daysInYearPassedMonth[is_leap][month]) {\n tt.month = month + 1;\n tt.day = doy - Time.daysInYearPassedMonth[is_leap][month];\n break;\n }\n }\n\n tt.auto_normalize = true;\n return tt;\n }\n\n /**\n * Returns a new ICAL.Time instance from a date string, e.g 2015-01-02.\n *\n * @deprecated Use {@link ICAL.Time.fromDateString} instead\n * @param {String} str The string to create from\n * @return {Time} The date/time instance\n */\n static fromStringv2(str) {\n return new Time({\n year: parseInt(str.slice(0, 4), 10),\n month: parseInt(str.slice(5, 7), 10),\n day: parseInt(str.slice(8, 10), 10),\n isDate: true\n });\n }\n\n /**\n * Returns a new ICAL.Time instance from a date string, e.g 2015-01-02.\n *\n * @param {String} aValue The string to create from\n * @return {Time} The date/time instance\n */\n static fromDateString(aValue) {\n // Dates should have no timezone.\n // Google likes to sometimes specify Z on dates\n // we specifically ignore that to avoid issues.\n\n // YYYY-MM-DD\n // 2012-10-10\n return new Time({\n year: strictParseInt(aValue.slice(0, 4)),\n month: strictParseInt(aValue.slice(5, 7)),\n day: strictParseInt(aValue.slice(8, 10)),\n isDate: true\n });\n }\n\n /**\n * Returns a new ICAL.Time instance from a date-time string, e.g\n * 2015-01-02T03:04:05. If a property is specified, the timezone is set up\n * from the property's TZID parameter.\n *\n * @param {String} aValue The string to create from\n * @param {Property=} prop The property the date belongs to\n * @return {Time} The date/time instance\n */\n static fromDateTimeString(aValue, prop) {\n if (aValue.length < 19) {\n throw new Error(\n 'invalid date-time value: \"' + aValue + '\"'\n );\n }\n\n let zone;\n let zoneId;\n\n if (aValue.slice(-1) === 'Z') {\n zone = Timezone.utcTimezone;\n } else if (prop) {\n zoneId = prop.getParameter('tzid');\n\n if (prop.parent) {\n if (prop.parent.name === 'standard' || prop.parent.name === 'daylight') {\n // Per RFC 5545 3.8.2.4 and 3.8.2.2, start/end date-times within\n // these components MUST be specified in local time.\n zone = Timezone.localTimezone;\n } else if (zoneId) {\n // If the desired time zone is defined within the component tree,\n // fetch its definition and prefer that.\n zone = prop.parent.getTimeZoneByID(zoneId);\n }\n }\n }\n\n const timeData = {\n year: strictParseInt(aValue.slice(0, 4)),\n month: strictParseInt(aValue.slice(5, 7)),\n day: strictParseInt(aValue.slice(8, 10)),\n hour: strictParseInt(aValue.slice(11, 13)),\n minute: strictParseInt(aValue.slice(14, 16)),\n second: strictParseInt(aValue.slice(17, 19)),\n };\n\n // Although RFC 5545 requires that all TZIDs used within a file have a\n // corresponding time zone definition, we may not be parsing the full file\n // or we may be dealing with a non-compliant file; in either case, we can\n // check our own time zone service for the TZID in a last-ditch effort.\n if (zoneId && !zone) {\n timeData.timezone = zoneId;\n }\n\n // 2012-10-10T10:10:10(Z)?\n return new Time(timeData, zone);\n }\n\n /**\n * Returns a new ICAL.Time instance from a date or date-time string,\n *\n * @param {String} aValue The string to create from\n * @param {Property=} prop The property the date belongs to\n * @return {Time} The date/time instance\n */\n static fromString(aValue, aProperty) {\n if (aValue.length > 10) {\n return Time.fromDateTimeString(aValue, aProperty);\n } else {\n return Time.fromDateString(aValue);\n }\n }\n\n /**\n * Creates a new ICAL.Time instance from the given Javascript Date.\n *\n * @param {?Date} aDate The Javascript Date to read, or null to reset\n * @param {Boolean} [useUTC=false] If true, the UTC values of the date will be used\n */\n static fromJSDate(aDate, useUTC) {\n let tt = new Time();\n return tt.fromJSDate(aDate, useUTC);\n }\n\n /**\n * Creates a new ICAL.Time instance from the the passed data object.\n *\n * @param {timeInit} aData Time initialization\n * @param {Timezone=} aZone Timezone this position occurs in\n */\n static fromData = function fromData(aData, aZone) {\n let t = new Time();\n return t.fromData(aData, aZone);\n };\n\n /**\n * Creates a new ICAL.Time instance from the current moment.\n * The instance is “floating” - has no timezone relation.\n * To create an instance considering the time zone, call\n * ICAL.Time.fromJSDate(new Date(), true)\n * @return {Time}\n */\n static now() {\n return Time.fromJSDate(new Date(), false);\n }\n\n /**\n * Returns the date on which ISO week number 1 starts.\n *\n * @see Time#weekNumber\n * @param {Number} aYear The year to search in\n * @param {weekDay=} aWeekStart The week start weekday, used for calculation.\n * @return {Time} The date on which week number 1 starts\n */\n static weekOneStarts(aYear, aWeekStart) {\n let t = Time.fromData({\n year: aYear,\n month: 1,\n day: 1,\n isDate: true\n });\n\n let dow = t.dayOfWeek();\n let wkst = aWeekStart || Time.DEFAULT_WEEK_START;\n if (dow > Time.THURSDAY) {\n t.day += 7;\n }\n if (wkst > Time.THURSDAY) {\n t.day -= 7;\n }\n\n t.day -= dow - wkst;\n\n return t;\n }\n\n /**\n * Get the dominical letter for the given year. Letters range from A - G for\n * common years, and AG to GF for leap years.\n *\n * @param {Number} yr The year to retrieve the letter for\n * @return {String} The dominical letter.\n */\n static getDominicalLetter(yr) {\n let LTRS = \"GFEDCBA\";\n let dom = (yr + (yr / 4 | 0) + (yr / 400 | 0) - (yr / 100 | 0) - 1) % 7;\n let isLeap = Time.isLeapYear(yr);\n if (isLeap) {\n return LTRS[(dom + 6) % 7] + LTRS[dom];\n } else {\n return LTRS[dom];\n }\n }\n\n static #epochTime = null;\n /**\n * January 1st, 1970 as an ICAL.Time.\n * @type {Time}\n * @constant\n * @instance\n */\n static get epochTime() {\n if (!this.#epochTime) {\n this.#epochTime = Time.fromData({\n year: 1970,\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n isDate: false,\n timezone: \"Z\"\n });\n }\n return this.#epochTime;\n }\n\n static _cmp_attr(a, b, attr) {\n if (a[attr] > b[attr]) return 1;\n if (a[attr] < b[attr]) return -1;\n return 0;\n }\n\n /**\n * The days that have passed in the year after a given month. The array has\n * two members, one being an array of passed days for non-leap years, the\n * other analog for leap years.\n * @example\n * var isLeapYear = ICAL.Time.isLeapYear(year);\n * var passedDays = ICAL.Time.daysInYearPassedMonth[isLeapYear][month];\n * @type {Array.>}\n */\n static daysInYearPassedMonth = [\n [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365],\n [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366]\n ];\n\n static SUNDAY = 1;\n static MONDAY = 2;\n static TUESDAY = 3;\n static WEDNESDAY = 4;\n static THURSDAY = 5;\n static FRIDAY = 6;\n static SATURDAY = 7;\n\n /**\n * The default weekday for the WKST part.\n * @constant\n * @default ICAL.Time.MONDAY\n */\n static DEFAULT_WEEK_START = 2; // MONDAY\n\n /**\n * Creates a new ICAL.Time instance.\n *\n * @param {timeInit} data Time initialization\n * @param {Timezone} zone timezone this position occurs in\n */\n constructor(data, zone) {\n this.wrappedJSObject = this;\n\n /**\n * @type {timeInit}\n * @private\n */\n this._time = Object.create(null);\n\n /* time defaults */\n this._time.year = 0;\n this._time.month = 1;\n this._time.day = 1;\n this._time.hour = 0;\n this._time.minute = 0;\n this._time.second = 0;\n this._time.isDate = false;\n\n this.fromData(data, zone);\n }\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icaltime\"\n */\n icalclass = \"icaltime\";\n _cachedUnixTime = null;\n\n /**\n * The type name, to be used in the jCal object. This value may change and\n * is strictly defined by the {@link ICAL.Time#isDate isDate} member.\n * @type {String}\n * @default \"date-time\"\n */\n get icaltype() {\n return this.isDate ? 'date' : 'date-time';\n }\n\n /**\n * The timezone for this time.\n * @type {Timezone}\n */\n zone = null;\n\n /**\n * Internal uses to indicate that a change has been made and the next read\n * operation must attempt to normalize the value (for example changing the\n * day to 33).\n *\n * @type {Boolean}\n * @private\n */\n _pendingNormalization = false;\n\n /**\n * The year of this date.\n * @type {Number}\n */\n get year() {\n return this._getTimeAttr('year');\n }\n\n set year(val) {\n this._setTimeAttr('year', val);\n }\n\n /**\n * The month of this date.\n * @type {Number}\n */\n get month() {\n return this._getTimeAttr('month');\n }\n\n set month(val) {\n this._setTimeAttr('month', val);\n }\n\n /**\n * The day of this date.\n * @type {Number}\n */\n get day() {\n return this._getTimeAttr('day');\n }\n\n set day(val) {\n this._setTimeAttr('day', val);\n }\n\n /**\n * The hour of this date-time.\n * @type {Number}\n */\n get hour() {\n return this._getTimeAttr('hour');\n }\n\n set hour(val) {\n this._setTimeAttr('hour', val);\n }\n\n /**\n * The minute of this date-time.\n * @type {Number}\n */\n get minute() {\n return this._getTimeAttr('minute');\n }\n\n set minute(val) {\n this._setTimeAttr('minute', val);\n }\n\n /**\n * The second of this date-time.\n * @type {Number}\n */\n get second() {\n return this._getTimeAttr('second');\n }\n\n set second(val) {\n this._setTimeAttr('second', val);\n }\n\n /**\n * If true, the instance represents a date (as opposed to a date-time)\n * @type {Boolean}\n */\n get isDate() {\n return this._getTimeAttr('isDate');\n }\n\n set isDate(val) {\n this._setTimeAttr('isDate', val);\n }\n\n /**\n * @private\n * @param {String} attr Attribute to get (one of: year, month,\n * day, hour, minute, second, isDate)\n * @return {Number|Boolean} Current value for the attribute\n */\n _getTimeAttr(attr) {\n if (this._pendingNormalization) {\n this._normalize();\n this._pendingNormalization = false;\n }\n\n return this._time[attr];\n }\n\n /**\n * @private\n * @param {String} attr Attribute to set (one of: year, month,\n * day, hour, minute, second, isDate)\n * @param {Number|Boolean} val New value for the attribute\n */\n _setTimeAttr(attr, val) {\n // Check if isDate will be set and if was not set to normalize date.\n // This avoids losing days when seconds, minutes and hours are zeroed\n // what normalize will do when time is a date.\n if (attr === \"isDate\" && val && !this._time.isDate) {\n this.adjust(0, 0, 0, 0);\n }\n this._cachedUnixTime = null;\n this._pendingNormalization = true;\n this._time[attr] = val;\n }\n\n /**\n * Returns a clone of the time object.\n *\n * @return {Time} The cloned object\n */\n clone() {\n return new Time(this._time, this.zone);\n }\n\n /**\n * Reset the time instance to epoch time\n */\n reset() {\n this.fromData(Time.epochTime);\n this.zone = Timezone.utcTimezone;\n }\n\n /**\n * Reset the time instance to the given date/time values.\n *\n * @param {Number} year The year to set\n * @param {Number} month The month to set\n * @param {Number} day The day to set\n * @param {Number} hour The hour to set\n * @param {Number} minute The minute to set\n * @param {Number} second The second to set\n * @param {Timezone} timezone The timezone to set\n */\n resetTo(year, month, day, hour, minute, second, timezone) {\n this.fromData({\n year: year,\n month: month,\n day: day,\n hour: hour,\n minute: minute,\n second: second,\n zone: timezone\n });\n }\n\n /**\n * Set up the current instance from the Javascript date value.\n *\n * @param {?Date} aDate The Javascript Date to read, or null to reset\n * @param {Boolean} [useUTC=false] If true, the UTC values of the date will be used\n */\n fromJSDate(aDate, useUTC) {\n if (!aDate) {\n this.reset();\n } else {\n if (useUTC) {\n this.zone = Timezone.utcTimezone;\n this.year = aDate.getUTCFullYear();\n this.month = aDate.getUTCMonth() + 1;\n this.day = aDate.getUTCDate();\n this.hour = aDate.getUTCHours();\n this.minute = aDate.getUTCMinutes();\n this.second = aDate.getUTCSeconds();\n } else {\n this.zone = Timezone.localTimezone;\n this.year = aDate.getFullYear();\n this.month = aDate.getMonth() + 1;\n this.day = aDate.getDate();\n this.hour = aDate.getHours();\n this.minute = aDate.getMinutes();\n this.second = aDate.getSeconds();\n }\n }\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {timeInit} aData Time initialization\n * @param {Timezone=} aZone Timezone this position occurs in\n */\n fromData(aData, aZone) {\n if (aData) {\n for (let [key, value] of Object.entries(aData)) {\n // ical type cannot be set\n if (key === 'icaltype') continue;\n this[key] = value;\n }\n }\n\n if (aZone) {\n this.zone = aZone;\n }\n\n if (aData && !(\"isDate\" in aData)) {\n this.isDate = !(\"hour\" in aData);\n } else if (aData && (\"isDate\" in aData)) {\n this.isDate = aData.isDate;\n }\n\n if (aData && \"timezone\" in aData) {\n let zone = TimezoneService.get(\n aData.timezone\n );\n\n this.zone = zone || Timezone.localTimezone;\n }\n\n if (aData && \"zone\" in aData) {\n this.zone = aData.zone;\n }\n\n if (!this.zone) {\n this.zone = Timezone.localTimezone;\n }\n\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Calculate the day of week.\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {weekDay}\n */\n dayOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let dowCacheKey = (this.year << 12) + (this.month << 8) + (this.day << 3) + firstDow;\n if (dowCacheKey in Time._dowCache) {\n return Time._dowCache[dowCacheKey];\n }\n\n // Using Zeller's algorithm\n let q = this.day;\n let m = this.month + (this.month < 3 ? 12 : 0);\n let Y = this.year - (this.month < 3 ? 1 : 0);\n\n let h = (q + Y + trunc(((m + 1) * 26) / 10) + trunc(Y / 4));\n { // eslint-disable-line no-constant-condition\n h += trunc(Y / 100) * 6 + trunc(Y / 400);\n }\n\n // Normalize to 1 = wkst\n h = ((h + 7 - firstDow) % 7) + 1;\n Time._dowCache[dowCacheKey] = h;\n return h;\n }\n\n /**\n * Calculate the day of year.\n * @return {Number}\n */\n dayOfYear() {\n let is_leap = (Time.isLeapYear(this.year) ? 1 : 0);\n let diypm = Time.daysInYearPassedMonth;\n return diypm[is_leap][this.month - 1] + this.day;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * week. The resulting ICAL.Time instance is of icaltype date, even if this\n * is a date-time.\n *\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Time} The start of the week (cloned)\n */\n startOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let result = this.clone();\n result.day -= ((this.dayOfWeek() + 7 - firstDow) % 7);\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the week.\n * The resulting ICAL.Time instance is of icaltype date, even if this is a\n * date-time.\n *\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Time} The end of the week (cloned)\n */\n endOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let result = this.clone();\n result.day += (7 - this.dayOfWeek() + firstDow - Time.SUNDAY) % 7;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * month. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The start of the month (cloned)\n */\n startOfMonth() {\n let result = this.clone();\n result.day = 1;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the\n * month. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The end of the month (cloned)\n */\n endOfMonth() {\n let result = this.clone();\n result.day = Time.daysInMonth(result.month, result.year);\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * year. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The start of the year (cloned)\n */\n startOfYear() {\n let result = this.clone();\n result.day = 1;\n result.month = 1;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the\n * year. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The end of the year (cloned)\n */\n endOfYear() {\n let result = this.clone();\n result.day = 31;\n result.month = 12;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * First calculates the start of the week, then returns the day of year for\n * this date. If the day falls into the previous year, the day is zero or negative.\n *\n * @param {weekDay=} aFirstDayOfWeek\n * The week start weekday, defaults to SUNDAY\n * @return {Number} The calculated day of year\n */\n startDoyWeek(aFirstDayOfWeek) {\n let firstDow = aFirstDayOfWeek || Time.SUNDAY;\n let delta = this.dayOfWeek() - firstDow;\n if (delta < 0) delta += 7;\n return this.dayOfYear() - delta;\n }\n\n /**\n * Get the dominical letter for the current year. Letters range from A - G\n * for common years, and AG to GF for leap years.\n *\n * @param {Number} yr The year to retrieve the letter for\n * @return {String} The dominical letter.\n */\n getDominicalLetter() {\n return Time.getDominicalLetter(this.year);\n }\n\n /**\n * Finds the nthWeekDay relative to the current month (not day). The\n * returned value is a day relative the month that this month belongs to so\n * 1 would indicate the first of the month and 40 would indicate a day in\n * the following month.\n *\n * @param {Number} aDayOfWeek Day of the week see the day name constants\n * @param {Number} aPos Nth occurrence of a given week day values\n * of 1 and 0 both indicate the first weekday of that type. aPos may\n * be either positive or negative\n *\n * @return {Number} numeric value indicating a day relative\n * to the current month of this time object\n */\n nthWeekDay(aDayOfWeek, aPos) {\n let daysInMonth = Time.daysInMonth(this.month, this.year);\n let weekday;\n let pos = aPos;\n\n let start = 0;\n\n let otherDay = this.clone();\n\n if (pos >= 0) {\n otherDay.day = 1;\n\n // because 0 means no position has been given\n // 1 and 0 indicate the same day.\n if (pos != 0) {\n // remove the extra numeric value\n pos--;\n }\n\n // set current start offset to current day.\n start = otherDay.day;\n\n // find the current day of week\n let startDow = otherDay.dayOfWeek();\n\n // calculate the difference between current\n // day of the week and desired day of the week\n let offset = aDayOfWeek - startDow;\n\n\n // if the offset goes into the past\n // week we add 7 so it goes into the next\n // week. We only want to go forward in time here.\n if (offset < 0)\n // this is really important otherwise we would\n // end up with dates from in the past.\n offset += 7;\n\n // add offset to start so start is the same\n // day of the week as the desired day of week.\n start += offset;\n\n // because we are going to add (and multiply)\n // the numeric value of the day we subtract it\n // from the start position so not to add it twice.\n start -= aDayOfWeek;\n\n // set week day\n weekday = aDayOfWeek;\n } else {\n\n // then we set it to the last day in the current month\n otherDay.day = daysInMonth;\n\n // find the ends weekday\n let endDow = otherDay.dayOfWeek();\n\n pos++;\n\n weekday = (endDow - aDayOfWeek);\n\n if (weekday < 0) {\n weekday += 7;\n }\n\n weekday = daysInMonth - weekday;\n }\n\n weekday += pos * 7;\n\n return start + weekday;\n }\n\n /**\n * Checks if current time is the nth weekday, relative to the current\n * month. Will always return false when rule resolves outside of current\n * month.\n *\n * @param {weekDay} aDayOfWeek Day of week to check\n * @param {Number} aPos Relative position\n * @return {Boolean} True, if it is the nth weekday\n */\n isNthWeekDay(aDayOfWeek, aPos) {\n let dow = this.dayOfWeek();\n\n if (aPos === 0 && dow === aDayOfWeek) {\n return true;\n }\n\n // get pos\n let day = this.nthWeekDay(aDayOfWeek, aPos);\n\n if (day === this.day) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Calculates the ISO 8601 week number. The first week of a year is the\n * week that contains the first Thursday. The year can have 53 weeks, if\n * January 1st is a Friday.\n *\n * Note there are regions where the first week of the year is the one that\n * starts on January 1st, which may offset the week number. Also, if a\n * different week start is specified, this will also affect the week\n * number.\n *\n * @see Time.weekOneStarts\n * @param {weekDay} aWeekStart The weekday the week starts with\n * @return {Number} The ISO week number\n */\n weekNumber(aWeekStart) {\n let wnCacheKey = (this.year << 12) + (this.month << 8) + (this.day << 3) + aWeekStart;\n if (wnCacheKey in Time._wnCache) {\n return Time._wnCache[wnCacheKey];\n }\n // This function courtesty of Julian Bucknall, published under the MIT license\n // http://www.boyet.com/articles/publishedarticles/calculatingtheisoweeknumb.html\n // plus some fixes to be able to use different week starts.\n let week1;\n\n let dt = this.clone();\n dt.isDate = true;\n let isoyear = this.year;\n\n if (dt.month == 12 && dt.day > 25) {\n week1 = Time.weekOneStarts(isoyear + 1, aWeekStart);\n if (dt.compare(week1) < 0) {\n week1 = Time.weekOneStarts(isoyear, aWeekStart);\n } else {\n isoyear++;\n }\n } else {\n week1 = Time.weekOneStarts(isoyear, aWeekStart);\n if (dt.compare(week1) < 0) {\n week1 = Time.weekOneStarts(--isoyear, aWeekStart);\n }\n }\n\n let daysBetween = (dt.subtractDate(week1).toSeconds() / 86400);\n let answer = trunc(daysBetween / 7) + 1;\n Time._wnCache[wnCacheKey] = answer;\n return answer;\n }\n\n /**\n * Adds the duration to the current time. The instance is modified in\n * place.\n *\n * @param {Duration} aDuration The duration to add\n */\n addDuration(aDuration) {\n let mult = (aDuration.isNegative ? -1 : 1);\n\n // because of the duration optimizations it is much\n // more efficient to grab all the values up front\n // then set them directly (which will avoid a normalization call).\n // So we don't actually normalize until we need it.\n let second = this.second;\n let minute = this.minute;\n let hour = this.hour;\n let day = this.day;\n\n second += mult * aDuration.seconds;\n minute += mult * aDuration.minutes;\n hour += mult * aDuration.hours;\n day += mult * aDuration.days;\n day += mult * 7 * aDuration.weeks;\n\n this.second = second;\n this.minute = minute;\n this.hour = hour;\n this.day = day;\n\n this._cachedUnixTime = null;\n }\n\n /**\n * Subtract the date details (_excluding_ timezone). Useful for finding\n * the relative difference between two time objects excluding their\n * timezone differences.\n *\n * @param {Time} aDate The date to subtract\n * @return {Duration} The difference as a duration\n */\n subtractDate(aDate) {\n let unixTime = this.toUnixTime() + this.utcOffset();\n let other = aDate.toUnixTime() + aDate.utcOffset();\n return Duration.fromSeconds(unixTime - other);\n }\n\n /**\n * Subtract the date details, taking timezones into account.\n *\n * @param {Time} aDate The date to subtract\n * @return {Duration} The difference in duration\n */\n subtractDateTz(aDate) {\n let unixTime = this.toUnixTime();\n let other = aDate.toUnixTime();\n return Duration.fromSeconds(unixTime - other);\n }\n\n /**\n * Compares the ICAL.Time instance with another one, or a period.\n *\n * @param {Time|Period} aOther The instance to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(other) {\n if (other instanceof Period) {\n return -1 * other.compare(this);\n } else {\n let a = this.toUnixTime();\n let b = other.toUnixTime();\n\n if (a > b) return 1;\n if (b > a) return -1;\n return 0;\n }\n }\n\n /**\n * Compares only the date part of this instance with another one.\n *\n * @param {Time} other The instance to compare with\n * @param {Timezone} tz The timezone to compare in\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compareDateOnlyTz(other, tz) {\n let a = this.convertToZone(tz);\n let b = other.convertToZone(tz);\n let rc = 0;\n\n if ((rc = Time._cmp_attr(a, b, \"year\")) != 0) return rc;\n if ((rc = Time._cmp_attr(a, b, \"month\")) != 0) return rc;\n if ((rc = Time._cmp_attr(a, b, \"day\")) != 0) return rc;\n\n return rc;\n }\n\n /**\n * Convert the instance into another timezone. The returned ICAL.Time\n * instance is always a copy.\n *\n * @param {Timezone} zone The zone to convert to\n * @return {Time} The copy, converted to the zone\n */\n convertToZone(zone) {\n let copy = this.clone();\n let zone_equals = (this.zone.tzid == zone.tzid);\n\n if (!this.isDate && !zone_equals) {\n Timezone.convert_time(copy, this.zone, zone);\n }\n\n copy.zone = zone;\n return copy;\n }\n\n /**\n * Calculates the UTC offset of the current date/time in the timezone it is\n * in.\n *\n * @return {Number} UTC offset in seconds\n */\n utcOffset() {\n if (this.zone == Timezone.localTimezone ||\n this.zone == Timezone.utcTimezone) {\n return 0;\n } else {\n return this.zone.utcOffset(this);\n }\n }\n\n /**\n * Returns an RFC 5545 compliant ical representation of this object.\n *\n * @return {String} ical date/date-time\n */\n toICALString() {\n let string = this.toString();\n\n if (string.length > 10) {\n return design.icalendar.value['date-time'].toICAL(string);\n } else {\n return design.icalendar.value.date.toICAL(string);\n }\n }\n\n /**\n * The string representation of this date/time, in jCal form\n * (including : and - separators).\n * @return {String}\n */\n toString() {\n let result = this.year + '-' +\n pad2(this.month) + '-' +\n pad2(this.day);\n\n if (!this.isDate) {\n result += 'T' + pad2(this.hour) + ':' +\n pad2(this.minute) + ':' +\n pad2(this.second);\n\n if (this.zone === Timezone.utcTimezone) {\n result += 'Z';\n }\n }\n\n return result;\n }\n\n /**\n * Converts the current instance to a Javascript date\n * @return {Date}\n */\n toJSDate() {\n if (this.zone == Timezone.localTimezone) {\n if (this.isDate) {\n return new Date(this.year, this.month - 1, this.day);\n } else {\n return new Date(this.year, this.month - 1, this.day,\n this.hour, this.minute, this.second, 0);\n }\n } else {\n return new Date(this.toUnixTime() * 1000);\n }\n }\n\n _normalize() {\n if (this._time.isDate) {\n this._time.hour = 0;\n this._time.minute = 0;\n this._time.second = 0;\n }\n this.adjust(0, 0, 0, 0);\n\n return this;\n }\n\n /**\n * Adjust the date/time by the given offset\n *\n * @param {Number} aExtraDays The extra amount of days\n * @param {Number} aExtraHours The extra amount of hours\n * @param {Number} aExtraMinutes The extra amount of minutes\n * @param {Number} aExtraSeconds The extra amount of seconds\n * @param {Number=} aTime The time to adjust, defaults to the\n * current instance.\n */\n adjust(aExtraDays, aExtraHours, aExtraMinutes, aExtraSeconds, aTime) {\n\n let minutesOverflow, hoursOverflow,\n daysOverflow = 0, yearsOverflow = 0;\n\n let second, minute, hour, day;\n let daysInMonth;\n\n let time = aTime || this._time;\n\n if (!time.isDate) {\n second = time.second + aExtraSeconds;\n time.second = second % 60;\n minutesOverflow = trunc(second / 60);\n if (time.second < 0) {\n time.second += 60;\n minutesOverflow--;\n }\n\n minute = time.minute + aExtraMinutes + minutesOverflow;\n time.minute = minute % 60;\n hoursOverflow = trunc(minute / 60);\n if (time.minute < 0) {\n time.minute += 60;\n hoursOverflow--;\n }\n\n hour = time.hour + aExtraHours + hoursOverflow;\n\n time.hour = hour % 24;\n daysOverflow = trunc(hour / 24);\n if (time.hour < 0) {\n time.hour += 24;\n daysOverflow--;\n }\n }\n\n\n // Adjust month and year first, because we need to know what month the day\n // is in before adjusting it.\n if (time.month > 12) {\n yearsOverflow = trunc((time.month - 1) / 12);\n } else if (time.month < 1) {\n yearsOverflow = trunc(time.month / 12) - 1;\n }\n\n time.year += yearsOverflow;\n time.month -= 12 * yearsOverflow;\n\n // Now take care of the days (and adjust month if needed)\n day = time.day + aExtraDays + daysOverflow;\n\n if (day > 0) {\n for (;;) {\n daysInMonth = Time.daysInMonth(time.month, time.year);\n if (day <= daysInMonth) {\n break;\n }\n\n time.month++;\n if (time.month > 12) {\n time.year++;\n time.month = 1;\n }\n\n day -= daysInMonth;\n }\n } else {\n while (day <= 0) {\n if (time.month == 1) {\n time.year--;\n time.month = 12;\n } else {\n time.month--;\n }\n\n day += Time.daysInMonth(time.month, time.year);\n }\n }\n\n time.day = day;\n\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Sets up the current instance from unix time, the number of seconds since\n * January 1st, 1970.\n *\n * @param {Number} seconds The seconds to set up with\n */\n fromUnixTime(seconds) {\n this.zone = Timezone.utcTimezone;\n // We could use `fromJSDate` here, but this is about twice as fast.\n // We could also clone `epochTime` and use `adjust` for a more\n // ical.js-centric approach, but this is about 100 times as fast.\n let date = new Date(seconds * 1000);\n this.year = date.getUTCFullYear();\n this.month = date.getUTCMonth() + 1;\n this.day = date.getUTCDate();\n if (this._time.isDate) {\n this.hour = 0;\n this.minute = 0;\n this.second = 0;\n } else {\n this.hour = date.getUTCHours();\n this.minute = date.getUTCMinutes();\n this.second = date.getUTCSeconds();\n }\n\n this._cachedUnixTime = null;\n }\n\n /**\n * Converts the current instance to seconds since January 1st 1970.\n *\n * @return {Number} Seconds since 1970\n */\n toUnixTime() {\n if (this._cachedUnixTime !== null) {\n return this._cachedUnixTime;\n }\n let offset = this.utcOffset();\n\n // we use the offset trick to ensure\n // that we are getting the actual UTC time\n let ms = Date.UTC(\n this.year,\n this.month - 1,\n this.day,\n this.hour,\n this.minute,\n this.second - offset\n );\n\n // seconds\n this._cachedUnixTime = ms / 1000;\n return this._cachedUnixTime;\n }\n\n /**\n * Converts time to into Object which can be serialized then re-created\n * using the constructor.\n *\n * @example\n * // toJSON will automatically be called\n * var json = JSON.stringify(mytime);\n *\n * var deserialized = JSON.parse(json);\n *\n * var time = new ICAL.Time(deserialized);\n *\n * @return {Object}\n */\n toJSON() {\n let copy = [\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'isDate'\n ];\n\n let result = Object.create(null);\n\n let i = 0;\n let len = copy.length;\n let prop;\n\n for (; i < len; i++) {\n prop = copy[i];\n result[prop] = this[prop];\n }\n\n if (this.zone) {\n result.timezone = this.zone.tzid;\n }\n\n return result;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").parserState} parserState\n * Imports the 'parserState' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\nconst CHAR = /[^ \\t]/;\nconst VALUE_DELIMITER = ':';\nconst PARAM_DELIMITER = ';';\nconst PARAM_NAME_DELIMITER = '=';\nconst DEFAULT_VALUE_TYPE$1 = 'unknown';\nconst DEFAULT_PARAM_TYPE = 'text';\nconst RFC6868_REPLACE_MAP$1 = { \"^'\": '\"', \"^n\": \"\\n\", \"^^\": \"^\" };\n\n/**\n * Parses iCalendar or vCard data into a raw jCal object. Consult\n * documentation on the {@tutorial layers|layers of parsing} for more\n * details.\n *\n * @function ICAL.parse\n * @memberof ICAL\n * @variation function\n * @todo Fix the API to be more clear on the return type\n * @param {String} input The string data to parse\n * @return {Object|Object[]} A single jCal object, or an array thereof\n */\nfunction parse(input) {\n let state = {};\n let root = state.component = [];\n\n state.stack = [root];\n\n parse._eachLine(input, function(err, line) {\n parse._handleContentLine(line, state);\n });\n\n\n // when there are still items on the stack\n // throw a fatal error, a component was not closed\n // correctly in that case.\n if (state.stack.length > 1) {\n throw new ParserError(\n 'invalid ical body. component began but did not end'\n );\n }\n\n state = null;\n\n return (root.length == 1 ? root[0] : root);\n}\n\n/**\n * Parse an iCalendar property value into the jCal for a single property\n *\n * @function ICAL.parse.property\n * @param {String} str\n * The iCalendar property string to parse\n * @param {designSet=} designSet\n * The design data to use for this property\n * @return {Object}\n * The jCal Object containing the property\n */\nparse.property = function(str, designSet) {\n let state = {\n component: [[], []],\n designSet: designSet || design.defaultSet\n };\n parse._handleContentLine(str, state);\n return state.component[1][0];\n};\n\n/**\n * Convenience method to parse a component. You can use ICAL.parse() directly\n * instead.\n *\n * @function ICAL.parse.component\n * @see ICAL.parse(function)\n * @param {String} str The iCalendar component string to parse\n * @return {Object} The jCal Object containing the component\n */\nparse.component = function(str) {\n return parse(str);\n};\n\n\n/**\n * An error that occurred during parsing.\n *\n * @param {String} message The error message\n * @memberof ICAL.parse\n * @extends {Error}\n */\nclass ParserError extends Error {\n name = this.constructor.name;\n}\n\n// classes & constants\nparse.ParserError = ParserError;\n\n\n/**\n * Handles a single line of iCalendar/vCard, updating the state.\n *\n * @private\n * @function ICAL.parse._handleContentLine\n * @param {String} line The content line to process\n * @param {parserState} state The current state of the line parsing\n */\nparse._handleContentLine = function(line, state) {\n // break up the parts of the line\n let valuePos = line.indexOf(VALUE_DELIMITER);\n let paramPos = line.indexOf(PARAM_DELIMITER);\n\n let lastParamIndex;\n let lastValuePos;\n\n // name of property or begin/end\n let name;\n let value;\n // params is only overridden if paramPos !== -1.\n // we can't do params = params || {} later on\n // because it sacrifices ops.\n let params = {};\n\n /**\n * Different property cases\n *\n *\n * 1. RRULE:FREQ=foo\n * // FREQ= is not a param but the value\n *\n * 2. ATTENDEE;ROLE=REQ-PARTICIPANT;\n * // ROLE= is a param because : has not happened yet\n */\n // when the parameter delimiter is after the\n // value delimiter then it is not a parameter.\n\n if ((paramPos !== -1 && valuePos !== -1)) {\n // when the parameter delimiter is after the\n // value delimiter then it is not a parameter.\n if (paramPos > valuePos) {\n paramPos = -1;\n }\n }\n\n let parsedParams;\n if (paramPos !== -1) {\n name = line.slice(0, Math.max(0, paramPos)).toLowerCase();\n parsedParams = parse._parseParameters(line.slice(Math.max(0, paramPos)), 0, state.designSet);\n if (parsedParams[2] == -1) {\n throw new ParserError(\"Invalid parameters in '\" + line + \"'\");\n }\n params = parsedParams[0];\n // Handle parameter values with multiple entries\n let parsedParamLength;\n if (typeof parsedParams[1] === 'string') {\n parsedParamLength = parsedParams[1].length;\n } else {\n parsedParamLength = parsedParams[1].reduce((accumulator, currentValue) => {\n return accumulator + currentValue.length;\n }, 0);\n }\n lastParamIndex = parsedParamLength + parsedParams[2] + paramPos;\n if ((lastValuePos =\n line.slice(Math.max(0, lastParamIndex)).indexOf(VALUE_DELIMITER)) !== -1) {\n value = line.slice(Math.max(0, lastParamIndex + lastValuePos + 1));\n } else {\n throw new ParserError(\"Missing parameter value in '\" + line + \"'\");\n }\n } else if (valuePos !== -1) {\n // without parmeters (BEGIN:VCAENDAR, CLASS:PUBLIC)\n name = line.slice(0, Math.max(0, valuePos)).toLowerCase();\n value = line.slice(Math.max(0, valuePos + 1));\n\n if (name === 'begin') {\n let newComponent = [value.toLowerCase(), [], []];\n if (state.stack.length === 1) {\n state.component.push(newComponent);\n } else {\n state.component[2].push(newComponent);\n }\n state.stack.push(state.component);\n state.component = newComponent;\n if (!state.designSet) {\n state.designSet = design.getDesignSet(state.component[0]);\n }\n return;\n } else if (name === 'end') {\n state.component = state.stack.pop();\n return;\n }\n // If it is not begin/end, then this is a property with an empty value,\n // which should be considered valid.\n } else {\n /**\n * Invalid line.\n * The rational to throw an error is we will\n * never be certain that the rest of the file\n * is sane and it is unlikely that we can serialize\n * the result correctly either.\n */\n throw new ParserError(\n 'invalid line (no token \";\" or \":\") \"' + line + '\"'\n );\n }\n\n let valueType;\n let multiValue = false;\n let structuredValue = false;\n let propertyDetails;\n let splitName;\n let ungroupedName;\n\n // fetch the ungrouped part of the name\n if (state.designSet.propertyGroups && name.indexOf('.') !== -1) {\n splitName = name.split('.');\n params.group = splitName[0];\n ungroupedName = splitName[1];\n } else {\n ungroupedName = name;\n }\n\n if (ungroupedName in state.designSet.property) {\n propertyDetails = state.designSet.property[ungroupedName];\n\n if ('multiValue' in propertyDetails) {\n multiValue = propertyDetails.multiValue;\n }\n\n if ('structuredValue' in propertyDetails) {\n structuredValue = propertyDetails.structuredValue;\n }\n\n if (value && 'detectType' in propertyDetails) {\n valueType = propertyDetails.detectType(value);\n }\n }\n\n // attempt to determine value\n if (!valueType) {\n if (!('value' in params)) {\n if (propertyDetails) {\n valueType = propertyDetails.defaultType;\n } else {\n valueType = DEFAULT_VALUE_TYPE$1;\n }\n } else {\n // possible to avoid this?\n valueType = params.value.toLowerCase();\n }\n }\n\n delete params.value;\n\n /**\n * Note on `var result` juggling:\n *\n * I observed that building the array in pieces has adverse\n * effects on performance, so where possible we inline the creation.\n * It is a little ugly but resulted in ~2000 additional ops/sec.\n */\n\n let result;\n if (multiValue && structuredValue) {\n value = parse._parseMultiValue(value, structuredValue, valueType, [], multiValue, state.designSet, structuredValue);\n result = [ungroupedName, params, valueType, value];\n } else if (multiValue) {\n result = [ungroupedName, params, valueType];\n parse._parseMultiValue(value, multiValue, valueType, result, null, state.designSet, false);\n } else if (structuredValue) {\n value = parse._parseMultiValue(value, structuredValue, valueType, [], null, state.designSet, structuredValue);\n result = [ungroupedName, params, valueType, value];\n } else {\n value = parse._parseValue(value, valueType, state.designSet, false);\n result = [ungroupedName, params, valueType, value];\n }\n // rfc6350 requires that in vCard 4.0 the first component is the VERSION\n // component with as value 4.0, note that 3.0 does not have this requirement.\n if (state.component[0] === 'vcard' && state.component[1].length === 0 &&\n !(name === 'version' && value === '4.0')) {\n state.designSet = design.getDesignSet(\"vcard3\");\n }\n state.component[1].push(result);\n};\n\n/**\n * Parse a value from the raw value into the jCard/jCal value.\n *\n * @private\n * @function ICAL.parse._parseValue\n * @param {String} value Original value\n * @param {String} type Type of value\n * @param {Object} designSet The design data to use for this value\n * @return {Object} varies on type\n */\nparse._parseValue = function(value, type, designSet, structuredValue) {\n if (type in designSet.value && 'fromICAL' in designSet.value[type]) {\n return designSet.value[type].fromICAL(value, structuredValue);\n }\n return value;\n};\n\n/**\n * Parse parameters from a string to object.\n *\n * @function ICAL.parse._parseParameters\n * @private\n * @param {String} line A single unfolded line\n * @param {Number} start Position to start looking for properties\n * @param {Object} designSet The design data to use for this property\n * @return {Array} Array containing key/valye pairs of parsed parameters, the\n * parsed value, and the position of the last parameter found\n */\nparse._parseParameters = function(line, start, designSet) {\n let lastParam = start;\n let pos = 0;\n let delim = PARAM_NAME_DELIMITER;\n let result = {};\n let name, lcname;\n let value, valuePos = -1;\n let type, multiValue, mvdelim;\n\n // find the next '=' sign\n // use lastParam and pos to find name\n // check if \" is used if so get value from \"->\"\n // then increment pos to find next ;\n\n while ((pos !== false) &&\n (pos = line.indexOf(delim, pos + 1)) !== -1) {\n\n name = line.slice(lastParam + 1, pos);\n if (name.length == 0) {\n throw new ParserError(\"Empty parameter name in '\" + line + \"'\");\n }\n lcname = name.toLowerCase();\n mvdelim = false;\n multiValue = false;\n\n if (lcname in designSet.param && designSet.param[lcname].valueType) {\n type = designSet.param[lcname].valueType;\n } else {\n type = DEFAULT_PARAM_TYPE;\n }\n\n if (lcname in designSet.param) {\n multiValue = designSet.param[lcname].multiValue;\n if (designSet.param[lcname].multiValueSeparateDQuote) {\n mvdelim = parse._rfc6868Escape('\"' + multiValue + '\"');\n }\n }\n\n let nextChar = line[pos + 1];\n if (nextChar === '\"') {\n valuePos = pos + 2;\n pos = line.indexOf('\"', valuePos);\n if (multiValue && pos != -1) {\n let extendedValue = true;\n while (extendedValue) {\n if (line[pos + 1] == multiValue && line[pos + 2] == '\"') {\n pos = line.indexOf('\"', pos + 3);\n } else {\n extendedValue = false;\n }\n }\n }\n if (pos === -1) {\n throw new ParserError(\n 'invalid line (no matching double quote) \"' + line + '\"'\n );\n }\n value = line.slice(valuePos, pos);\n lastParam = line.indexOf(PARAM_DELIMITER, pos);\n let propValuePos = line.indexOf(VALUE_DELIMITER, pos);\n // if either no next parameter or delimeter in property value, let's stop here\n if (lastParam === -1 || (propValuePos !== -1 && lastParam > propValuePos)) {\n pos = false;\n }\n } else {\n valuePos = pos + 1;\n\n // move to next \";\"\n let nextPos = line.indexOf(PARAM_DELIMITER, valuePos);\n let propValuePos = line.indexOf(VALUE_DELIMITER, valuePos);\n if (propValuePos !== -1 && nextPos > propValuePos) {\n // this is a delimiter in the property value, let's stop here\n nextPos = propValuePos;\n pos = false;\n } else if (nextPos === -1) {\n // no \";\"\n if (propValuePos === -1) {\n nextPos = line.length;\n } else {\n nextPos = propValuePos;\n }\n pos = false;\n } else {\n lastParam = nextPos;\n pos = nextPos;\n }\n\n value = line.slice(valuePos, nextPos);\n }\n\n const length_before = value.length;\n value = parse._rfc6868Escape(value);\n valuePos += length_before - value.length;\n if (multiValue) {\n let delimiter = mvdelim || multiValue;\n value = parse._parseMultiValue(value, delimiter, type, [], null, designSet);\n } else {\n value = parse._parseValue(value, type, designSet);\n }\n\n if (multiValue && (lcname in result)) {\n if (Array.isArray(result[lcname])) {\n result[lcname].push(value);\n } else {\n result[lcname] = [\n result[lcname],\n value\n ];\n }\n } else {\n result[lcname] = value;\n }\n }\n return [result, value, valuePos];\n};\n\n/**\n * Internal helper for rfc6868. Exposing this on ICAL.parse so that\n * hackers can disable the rfc6868 parsing if the really need to.\n *\n * @function ICAL.parse._rfc6868Escape\n * @param {String} val The value to escape\n * @return {String} The escaped value\n */\nparse._rfc6868Escape = function(val) {\n return val.replace(/\\^['n^]/g, function(x) {\n return RFC6868_REPLACE_MAP$1[x];\n });\n};\n\n/**\n * Parse a multi value string. This function is used either for parsing\n * actual multi-value property's values, or for handling parameter values. It\n * can be used for both multi-value properties and structured value properties.\n *\n * @private\n * @function ICAL.parse._parseMultiValue\n * @param {String} buffer The buffer containing the full value\n * @param {String} delim The multi-value delimiter\n * @param {String} type The value type to be parsed\n * @param {Array.} result The array to append results to, varies on value type\n * @param {String} innerMulti The inner delimiter to split each value with\n * @param {designSet} designSet The design data for this value\n * @return {?|Array.} Either an array of results, or the first result\n */\nparse._parseMultiValue = function(buffer, delim, type, result, innerMulti, designSet, structuredValue) {\n let pos = 0;\n let lastPos = 0;\n let value;\n if (delim.length === 0) {\n return buffer;\n }\n\n // split each piece\n while ((pos = unescapedIndexOf(buffer, delim, lastPos)) !== -1) {\n value = buffer.slice(lastPos, pos);\n if (innerMulti) {\n value = parse._parseMultiValue(value, innerMulti, type, [], null, designSet, structuredValue);\n } else {\n value = parse._parseValue(value, type, designSet, structuredValue);\n }\n result.push(value);\n lastPos = pos + delim.length;\n }\n\n // on the last piece take the rest of string\n value = buffer.slice(lastPos);\n if (innerMulti) {\n value = parse._parseMultiValue(value, innerMulti, type, [], null, designSet, structuredValue);\n } else {\n value = parse._parseValue(value, type, designSet, structuredValue);\n }\n result.push(value);\n\n return result.length == 1 ? result[0] : result;\n};\n\n/**\n * Process a complete buffer of iCalendar/vCard data line by line, correctly\n * unfolding content. Each line will be processed with the given callback\n *\n * @private\n * @function ICAL.parse._eachLine\n * @param {String} buffer The buffer to process\n * @param {function(?String, String)} callback The callback for each line\n */\nparse._eachLine = function(buffer, callback) {\n let len = buffer.length;\n let lastPos = buffer.search(CHAR);\n let pos = lastPos;\n let line;\n let firstChar;\n\n let newlineOffset;\n\n do {\n pos = buffer.indexOf('\\n', lastPos) + 1;\n\n if (pos > 1 && buffer[pos - 2] === '\\r') {\n newlineOffset = 2;\n } else {\n newlineOffset = 1;\n }\n\n if (pos === 0) {\n pos = len;\n newlineOffset = 0;\n }\n\n firstChar = buffer[lastPos];\n\n if (firstChar === ' ' || firstChar === '\\t') {\n // add to line\n line += buffer.slice(lastPos + 1, pos - newlineOffset);\n } else {\n if (line)\n callback(null, line);\n // push line\n line = buffer.slice(lastPos, pos - newlineOffset);\n }\n\n lastPos = pos;\n } while (pos !== len);\n\n // extra ending line\n line = line.trim();\n\n if (line.length)\n callback(null, line);\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nconst OPTIONS = [\"tzid\", \"location\", \"tznames\", \"latitude\", \"longitude\"];\n\n/**\n * Timezone representation.\n *\n * @example\n * var vcalendar;\n * var timezoneComp = vcalendar.getFirstSubcomponent('vtimezone');\n * var tzid = timezoneComp.getFirstPropertyValue('tzid');\n *\n * var timezone = new ICAL.Timezone({\n * component: timezoneComp,\n * tzid\n * });\n *\n * @memberof ICAL\n */\nclass Timezone {\n static _compare_change_fn(a, b) {\n if (a.year < b.year) return -1;\n else if (a.year > b.year) return 1;\n\n if (a.month < b.month) return -1;\n else if (a.month > b.month) return 1;\n\n if (a.day < b.day) return -1;\n else if (a.day > b.day) return 1;\n\n if (a.hour < b.hour) return -1;\n else if (a.hour > b.hour) return 1;\n\n if (a.minute < b.minute) return -1;\n else if (a.minute > b.minute) return 1;\n\n if (a.second < b.second) return -1;\n else if (a.second > b.second) return 1;\n\n return 0;\n }\n\n /**\n * Convert the date/time from one zone to the next.\n *\n * @param {Time} tt The time to convert\n * @param {Timezone} from_zone The source zone to convert from\n * @param {Timezone} to_zone The target zone to convert to\n * @return {Time} The converted date/time object\n */\n static convert_time(tt, from_zone, to_zone) {\n if (tt.isDate ||\n from_zone.tzid == to_zone.tzid ||\n from_zone == Timezone.localTimezone ||\n to_zone == Timezone.localTimezone) {\n tt.zone = to_zone;\n return tt;\n }\n\n let utcOffset = from_zone.utcOffset(tt);\n tt.adjust(0, 0, 0, - utcOffset);\n\n utcOffset = to_zone.utcOffset(tt);\n tt.adjust(0, 0, 0, utcOffset);\n\n return null;\n }\n\n /**\n * Creates a new ICAL.Timezone instance from the passed data object.\n *\n * @param {Component|Object} aData options for class\n * @param {String|Component} aData.component\n * If aData is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} aData.tzid The timezone identifier\n * @param {String} aData.location The timezone locationw\n * @param {String} aData.tznames An alternative string representation of the\n * timezone\n * @param {Number} aData.latitude The latitude of the timezone\n * @param {Number} aData.longitude The longitude of the timezone\n */\n static fromData(aData) {\n let tt = new Timezone();\n return tt.fromData(aData);\n }\n\n /**\n * The instance describing the UTC timezone\n * @type {Timezone}\n * @constant\n * @instance\n */\n static #utcTimezone = null;\n static get utcTimezone() {\n if (!this.#utcTimezone) {\n this.#utcTimezone = Timezone.fromData({\n tzid: \"UTC\"\n });\n }\n return this.#utcTimezone;\n }\n\n /**\n * The instance describing the local timezone\n * @type {Timezone}\n * @constant\n * @instance\n */\n static #localTimezone = null;\n static get localTimezone() {\n if (!this.#localTimezone) {\n this.#localTimezone = Timezone.fromData({\n tzid: \"floating\"\n });\n }\n return this.#localTimezone;\n }\n\n /**\n * Adjust a timezone change object.\n * @private\n * @param {Object} change The timezone change object\n * @param {Number} days The extra amount of days\n * @param {Number} hours The extra amount of hours\n * @param {Number} minutes The extra amount of minutes\n * @param {Number} seconds The extra amount of seconds\n */\n static adjust_change(change, days, hours, minutes, seconds) {\n return Time.prototype.adjust.call(\n change,\n days,\n hours,\n minutes,\n seconds,\n change\n );\n }\n\n static _minimumExpansionYear = -1;\n static EXTRA_COVERAGE = 5;\n\n /**\n * Creates a new ICAL.Timezone instance, by passing in a tzid and component.\n *\n * @param {Component|Object} data options for class\n * @param {String|Component} data.component\n * If data is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} data.tzid The timezone identifier\n * @param {String} data.location The timezone locationw\n * @param {String} data.tznames An alternative string representation of the\n * timezone\n * @param {Number} data.latitude The latitude of the timezone\n * @param {Number} data.longitude The longitude of the timezone\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.fromData(data);\n }\n\n\n /**\n * Timezone identifier\n * @type {String}\n */\n tzid = \"\";\n\n /**\n * Timezone location\n * @type {String}\n */\n location = \"\";\n\n /**\n * Alternative timezone name, for the string representation\n * @type {String}\n */\n tznames = \"\";\n\n /**\n * The primary latitude for the timezone.\n * @type {Number}\n */\n latitude = 0.0;\n\n /**\n * The primary longitude for the timezone.\n * @type {Number}\n */\n longitude = 0.0;\n\n /**\n * The vtimezone component for this timezone.\n * @type {Component}\n */\n component = null;\n\n /**\n * The year this timezone has been expanded to. All timezone transition\n * dates until this year are known and can be used for calculation\n *\n * @private\n * @type {Number}\n */\n expandedUntilYear = 0;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icaltimezone\"\n */\n icalclass = \"icaltimezone\";\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Component|Object} aData options for class\n * @param {String|Component} aData.component\n * If aData is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} aData.tzid The timezone identifier\n * @param {String} aData.location The timezone locationw\n * @param {String} aData.tznames An alternative string representation of the\n * timezone\n * @param {Number} aData.latitude The latitude of the timezone\n * @param {Number} aData.longitude The longitude of the timezone\n */\n fromData(aData) {\n this.expandedUntilYear = 0;\n this.changes = [];\n\n if (aData instanceof Component) {\n // Either a component is passed directly\n this.component = aData;\n } else {\n // Otherwise the component may be in the data object\n if (aData && \"component\" in aData) {\n if (typeof aData.component == \"string\") {\n // If a string was passed, parse it as a component\n let jCal = parse(aData.component);\n this.component = new Component(jCal);\n } else if (aData.component instanceof Component) {\n // If it was a component already, then just set it\n this.component = aData.component;\n } else {\n // Otherwise just null out the component\n this.component = null;\n }\n }\n\n // Copy remaining passed properties\n for (let prop of OPTIONS) {\n if (aData && prop in aData) {\n this[prop] = aData[prop];\n }\n }\n }\n\n // If we have a component but no TZID, attempt to get it from the\n // component's properties.\n if (this.component instanceof Component && !this.tzid) {\n this.tzid = this.component.getFirstPropertyValue('tzid');\n }\n\n return this;\n }\n\n /**\n * Finds the utcOffset the given time would occur in this timezone.\n *\n * @param {Time} tt The time to check for\n * @return {Number} utc offset in seconds\n */\n utcOffset(tt) {\n if (this == Timezone.utcTimezone || this == Timezone.localTimezone) {\n return 0;\n }\n\n this._ensureCoverage(tt.year);\n\n if (!this.changes.length) {\n return 0;\n }\n\n let tt_change = {\n year: tt.year,\n month: tt.month,\n day: tt.day,\n hour: tt.hour,\n minute: tt.minute,\n second: tt.second\n };\n\n let change_num = this._findNearbyChange(tt_change);\n let change_num_to_use = -1;\n let step = 1;\n\n // TODO: replace with bin search?\n for (;;) {\n let change = clone(this.changes[change_num], true);\n if (change.utcOffset < change.prevUtcOffset) {\n Timezone.adjust_change(change, 0, 0, 0, change.utcOffset);\n } else {\n Timezone.adjust_change(change, 0, 0, 0,\n change.prevUtcOffset);\n }\n\n let cmp = Timezone._compare_change_fn(tt_change, change);\n\n if (cmp >= 0) {\n change_num_to_use = change_num;\n } else {\n step = -1;\n }\n\n if (step == -1 && change_num_to_use != -1) {\n break;\n }\n\n change_num += step;\n\n if (change_num < 0) {\n return 0;\n }\n\n if (change_num >= this.changes.length) {\n break;\n }\n }\n\n let zone_change = this.changes[change_num_to_use];\n let utcOffset_change = zone_change.utcOffset - zone_change.prevUtcOffset;\n\n if (utcOffset_change < 0 && change_num_to_use > 0) {\n let tmp_change = clone(zone_change, true);\n Timezone.adjust_change(tmp_change, 0, 0, 0, tmp_change.prevUtcOffset);\n\n if (Timezone._compare_change_fn(tt_change, tmp_change) < 0) {\n let prev_zone_change = this.changes[change_num_to_use - 1];\n\n let want_daylight = false; // TODO\n\n if (zone_change.is_daylight != want_daylight &&\n prev_zone_change.is_daylight == want_daylight) {\n zone_change = prev_zone_change;\n }\n }\n }\n\n // TODO return is_daylight?\n return zone_change.utcOffset;\n }\n\n _findNearbyChange(change) {\n // find the closest match\n let idx = binsearchInsert(\n this.changes,\n change,\n Timezone._compare_change_fn\n );\n\n if (idx >= this.changes.length) {\n return this.changes.length - 1;\n }\n\n return idx;\n }\n\n _ensureCoverage(aYear) {\n if (Timezone._minimumExpansionYear == -1) {\n let today = Time.now();\n Timezone._minimumExpansionYear = today.year;\n }\n\n let changesEndYear = aYear;\n if (changesEndYear < Timezone._minimumExpansionYear) {\n changesEndYear = Timezone._minimumExpansionYear;\n }\n\n changesEndYear += Timezone.EXTRA_COVERAGE;\n\n if (!this.changes.length || this.expandedUntilYear < aYear) {\n let subcomps = this.component.getAllSubcomponents();\n let compLen = subcomps.length;\n let compIdx = 0;\n\n for (; compIdx < compLen; compIdx++) {\n this._expandComponent(\n subcomps[compIdx], changesEndYear, this.changes\n );\n }\n\n this.changes.sort(Timezone._compare_change_fn);\n this.expandedUntilYear = changesEndYear;\n }\n }\n\n _expandComponent(aComponent, aYear, changes) {\n if (!aComponent.hasProperty(\"dtstart\") ||\n !aComponent.hasProperty(\"tzoffsetto\") ||\n !aComponent.hasProperty(\"tzoffsetfrom\")) {\n return null;\n }\n\n let dtstart = aComponent.getFirstProperty(\"dtstart\").getFirstValue();\n let change;\n\n function convert_tzoffset(offset) {\n return offset.factor * (offset.hours * 3600 + offset.minutes * 60);\n }\n\n function init_changes() {\n let changebase = {};\n changebase.is_daylight = (aComponent.name == \"daylight\");\n changebase.utcOffset = convert_tzoffset(\n aComponent.getFirstProperty(\"tzoffsetto\").getFirstValue()\n );\n\n changebase.prevUtcOffset = convert_tzoffset(\n aComponent.getFirstProperty(\"tzoffsetfrom\").getFirstValue()\n );\n\n return changebase;\n }\n\n if (!aComponent.hasProperty(\"rrule\") && !aComponent.hasProperty(\"rdate\")) {\n change = init_changes();\n change.year = dtstart.year;\n change.month = dtstart.month;\n change.day = dtstart.day;\n change.hour = dtstart.hour;\n change.minute = dtstart.minute;\n change.second = dtstart.second;\n\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n changes.push(change);\n } else {\n let props = aComponent.getAllProperties(\"rdate\");\n for (let rdate of props) {\n let time = rdate.getFirstValue();\n change = init_changes();\n\n change.year = time.year;\n change.month = time.month;\n change.day = time.day;\n\n if (time.isDate) {\n change.hour = dtstart.hour;\n change.minute = dtstart.minute;\n change.second = dtstart.second;\n\n if (dtstart.zone != Timezone.utcTimezone) {\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n }\n } else {\n change.hour = time.hour;\n change.minute = time.minute;\n change.second = time.second;\n\n if (time.zone != Timezone.utcTimezone) {\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n }\n }\n\n changes.push(change);\n }\n\n let rrule = aComponent.getFirstProperty(\"rrule\");\n\n if (rrule) {\n rrule = rrule.getFirstValue();\n change = init_changes();\n\n if (rrule.until && rrule.until.zone == Timezone.utcTimezone) {\n rrule.until.adjust(0, 0, 0, change.prevUtcOffset);\n rrule.until.zone = Timezone.localTimezone;\n }\n\n let iterator = rrule.iterator(dtstart);\n\n let occ;\n while ((occ = iterator.next())) {\n change = init_changes();\n if (occ.year > aYear || !occ) {\n break;\n }\n\n change.year = occ.year;\n change.month = occ.month;\n change.day = occ.day;\n change.hour = occ.hour;\n change.minute = occ.minute;\n change.second = occ.second;\n change.isDate = occ.isDate;\n\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n changes.push(change);\n }\n }\n }\n\n return changes;\n }\n\n /**\n * The string representation of this timezone.\n * @return {String}\n */\n toString() {\n return (this.tznames ? this.tznames : this.tzid);\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nlet zones = null;\n\n/**\n * @classdesc\n * Singleton class to contain timezones. Right now it is all manual registry in\n * the future we may use this class to download timezone information or handle\n * loading pre-expanded timezones.\n *\n * @exports module:ICAL.TimezoneService\n * @memberof ICAL\n */\nconst TimezoneService = {\n get count() {\n if (zones === null) {\n return 0;\n }\n\n return Object.keys(zones).length;\n },\n\n reset: function() {\n zones = Object.create(null);\n let utc = Timezone.utcTimezone;\n\n zones.Z = utc;\n zones.UTC = utc;\n zones.GMT = utc;\n },\n _hard_reset: function() {\n zones = null;\n },\n\n /**\n * Checks if timezone id has been registered.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {Boolean} False, when not present\n */\n has: function(tzid) {\n if (zones === null) {\n return false;\n }\n\n return !!zones[tzid];\n },\n\n /**\n * Returns a timezone by its tzid if present.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {Timezone | undefined} The timezone, or undefined if not found\n */\n get: function(tzid) {\n if (zones === null) {\n this.reset();\n }\n\n return zones[tzid];\n },\n\n /**\n * Registers a timezone object or component.\n *\n * @param {Component|Timezone} timezone\n * The initialized zone or vtimezone.\n *\n * @param {String=} name\n * The name of the timezone. Defaults to the component's TZID if not\n * passed.\n */\n register: function(timezone, name) {\n if (zones === null) {\n this.reset();\n }\n\n // This avoids a breaking change by the change of argument order\n // TODO remove in v3\n if (typeof timezone === \"string\" && name instanceof Timezone) {\n [timezone, name] = [name, timezone];\n }\n\n if (!name) {\n if (timezone instanceof Timezone) {\n name = timezone.tzid;\n } else {\n if (timezone.name === 'vtimezone') {\n timezone = new Timezone(timezone);\n name = timezone.tzid;\n }\n }\n }\n\n if (!name) {\n throw new TypeError(\"Neither a timezone nor a name was passed\");\n }\n\n if (timezone instanceof Timezone) {\n zones[name] = timezone;\n } else {\n throw new TypeError('timezone must be ICAL.Timezone or ICAL.Component');\n }\n },\n\n /**\n * Removes a timezone by its tzid from the list.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {?Timezone} The removed timezone, or null if not registered\n */\n remove: function(tzid) {\n if (zones === null) {\n return null;\n }\n\n return (delete zones[tzid]);\n }\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Helper functions used in various places within ical.js\n * @module ICAL.helpers\n */\n\n/**\n * Compiles a list of all referenced TZIDs in all subcomponents and\n * removes any extra VTIMEZONE subcomponents. In addition, if any TZIDs\n * are referenced by a component, but a VTIMEZONE does not exist,\n * an attempt will be made to generate a VTIMEZONE using ICAL.TimezoneService.\n *\n * @param {Component} vcal The top-level VCALENDAR component.\n * @return {Component} The ICAL.Component that was passed in.\n */\nfunction updateTimezones(vcal) {\n let allsubs, properties, vtimezones, reqTzid, i;\n\n if (!vcal || vcal.name !== \"vcalendar\") {\n //not a top-level vcalendar component\n return vcal;\n }\n\n //Store vtimezone subcomponents in an object reference by tzid.\n //Store properties from everything else in another array\n allsubs = vcal.getAllSubcomponents();\n properties = [];\n vtimezones = {};\n for (i = 0; i < allsubs.length; i++) {\n if (allsubs[i].name === \"vtimezone\") {\n let tzid = allsubs[i].getFirstProperty(\"tzid\").getFirstValue();\n vtimezones[tzid] = allsubs[i];\n } else {\n properties = properties.concat(allsubs[i].getAllProperties());\n }\n }\n\n //create an object with one entry for each required tz\n reqTzid = {};\n for (i = 0; i < properties.length; i++) {\n let tzid = properties[i].getParameter(\"tzid\");\n if (tzid) {\n reqTzid[tzid] = true;\n }\n }\n\n //delete any vtimezones that are not on the reqTzid list.\n for (let [tzid, comp] of Object.entries(vtimezones)) {\n if (!reqTzid[tzid]) {\n vcal.removeSubcomponent(comp);\n }\n }\n\n //create any missing, but registered timezones\n for (let tzid of Object.keys(reqTzid)) {\n if (!vtimezones[tzid] && TimezoneService.has(tzid)) {\n vcal.addSubcomponent(TimezoneService.get(tzid).component);\n }\n }\n\n return vcal;\n}\n\n/**\n * Checks if the given type is of the number type and also NaN.\n *\n * @param {Number} number The number to check\n * @return {Boolean} True, if the number is strictly NaN\n */\nfunction isStrictlyNaN(number) {\n return typeof(number) === 'number' && isNaN(number);\n}\n\n/**\n * Parses a string value that is expected to be an integer, when the valid is\n * not an integer throws a decoration error.\n *\n * @param {String} string Raw string input\n * @return {Number} Parsed integer\n */\nfunction strictParseInt(string) {\n let result = parseInt(string, 10);\n\n if (isStrictlyNaN(result)) {\n throw new Error(\n 'Could not extract integer from \"' + string + '\"'\n );\n }\n\n return result;\n}\n\n/**\n * Creates or returns a class instance of a given type with the initialization\n * data if the data is not already an instance of the given type.\n *\n * @example\n * var time = new ICAL.Time(...);\n * var result = ICAL.helpers.formatClassType(time, ICAL.Time);\n *\n * (result instanceof ICAL.Time)\n * // => true\n *\n * result = ICAL.helpers.formatClassType({}, ICAL.Time);\n * (result isntanceof ICAL.Time)\n * // => true\n *\n *\n * @param {Object} data object initialization data\n * @param {Object} type object type (like ICAL.Time)\n * @return {?} An instance of the found type.\n */\nfunction formatClassType(data, type) {\n if (typeof(data) === 'undefined') {\n return undefined;\n }\n\n if (data instanceof type) {\n return data;\n }\n return new type(data);\n}\n\n/**\n * Identical to indexOf but will only match values when they are not preceded\n * by a backslash character.\n *\n * @param {String} buffer String to search\n * @param {String} search Value to look for\n * @param {Number} pos Start position\n * @return {Number} The position, or -1 if not found\n */\nfunction unescapedIndexOf(buffer, search, pos) {\n while ((pos = buffer.indexOf(search, pos)) !== -1) {\n if (pos > 0 && buffer[pos - 1] === '\\\\') {\n pos += 1;\n } else {\n return pos;\n }\n }\n return -1;\n}\n\n/**\n * Find the index for insertion using binary search.\n *\n * @param {Array} list The list to search\n * @param {?} seekVal The value to insert\n * @param {function(?,?)} cmpfunc The comparison func, that can\n * compare two seekVals\n * @return {Number} The insert position\n */\nfunction binsearchInsert(list, seekVal, cmpfunc) {\n if (!list.length)\n return 0;\n\n let low = 0, high = list.length - 1,\n mid, cmpval;\n\n while (low <= high) {\n mid = low + Math.floor((high - low) / 2);\n cmpval = cmpfunc(seekVal, list[mid]);\n\n if (cmpval < 0)\n high = mid - 1;\n else if (cmpval > 0)\n low = mid + 1;\n else\n break;\n }\n\n if (cmpval < 0)\n return mid; // insertion is displacing, so use mid outright.\n else if (cmpval > 0)\n return mid + 1;\n else\n return mid;\n}\n\n/**\n * Clone the passed object or primitive. By default a shallow clone will be\n * executed.\n *\n * @param {*} aSrc The thing to clone\n * @param {Boolean=} aDeep If true, a deep clone will be performed\n * @return {*} The copy of the thing\n */\nfunction clone(aSrc, aDeep) {\n if (!aSrc || typeof aSrc != \"object\") {\n return aSrc;\n } else if (aSrc instanceof Date) {\n return new Date(aSrc.getTime());\n } else if (\"clone\" in aSrc) {\n return aSrc.clone();\n } else if (Array.isArray(aSrc)) {\n let arr = [];\n for (let i = 0; i < aSrc.length; i++) {\n arr.push(aDeep ? clone(aSrc[i], true) : aSrc[i]);\n }\n return arr;\n } else {\n let obj = {};\n for (let [name, value] of Object.entries(aSrc)) {\n if (aDeep) {\n obj[name] = clone(value, true);\n } else {\n obj[name] = value;\n }\n }\n return obj;\n }\n}\n\n/**\n * Performs iCalendar line folding. A line ending character is inserted and\n * the next line begins with a whitespace.\n *\n * @example\n * SUMMARY:This line will be fold\n * ed right in the middle of a word.\n *\n * @param {String} aLine The line to fold\n * @return {String} The folded line\n */\nfunction foldline(aLine) {\n let result = \"\";\n let line = aLine || \"\", pos = 0, line_length = 0;\n //pos counts position in line for the UTF-16 presentation\n //line_length counts the bytes for the UTF-8 presentation\n while (line.length) {\n let cp = line.codePointAt(pos);\n if (cp < 128) ++line_length;\n else if (cp < 2048) line_length += 2;//needs 2 UTF-8 bytes\n else if (cp < 65536) line_length += 3;\n else line_length += 4; //cp is less than 1114112\n if (line_length < ICALmodule.foldLength + 1)\n pos += cp > 65535 ? 2 : 1;\n else {\n result += ICALmodule.newLineChar + \" \" + line.slice(0, Math.max(0, pos));\n line = line.slice(Math.max(0, pos));\n pos = line_length = 0;\n }\n }\n return result.slice(ICALmodule.newLineChar.length + 1);\n}\n\n/**\n * Pads the given string or number with zeros so it will have at least two\n * characters.\n *\n * @param {String|Number} data The string or number to pad\n * @return {String} The number padded as a string\n */\nfunction pad2(data) {\n if (typeof(data) !== 'string') {\n // handle fractions.\n if (typeof(data) === 'number') {\n data = parseInt(data);\n }\n data = String(data);\n }\n\n let len = data.length;\n\n switch (len) {\n case 0:\n return '00';\n case 1:\n return '0' + data;\n default:\n return data;\n }\n}\n\n/**\n * Truncates the given number, correctly handling negative numbers.\n *\n * @param {Number} number The number to truncate\n * @return {Number} The truncated number\n */\nfunction trunc(number) {\n return (number < 0 ? Math.ceil(number) : Math.floor(number));\n}\n\n/**\n * Poor-man's cross-browser object extension. Doesn't support all the\n * features, but enough for our usage. Note that the target's properties are\n * not overwritten with the source properties.\n *\n * @example\n * var child = ICAL.helpers.extend(parent, {\n * \"bar\": 123\n * });\n *\n * @param {Object} source The object to extend\n * @param {Object} target The object to extend with\n * @return {Object} Returns the target.\n */\nfunction extend(source, target) {\n for (let key in source) {\n let descr = Object.getOwnPropertyDescriptor(source, key);\n if (descr && !Object.getOwnPropertyDescriptor(target, key)) {\n Object.defineProperty(target, key, descr);\n }\n }\n return target;\n}\n\nvar helpers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n binsearchInsert: binsearchInsert,\n clone: clone,\n extend: extend,\n foldline: foldline,\n formatClassType: formatClassType,\n isStrictlyNaN: isStrictlyNaN,\n pad2: pad2,\n strictParseInt: strictParseInt,\n trunc: trunc,\n unescapedIndexOf: unescapedIndexOf,\n updateTimezones: updateTimezones\n});\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This class represents the \"utc-offset\" value type, with various calculation and manipulation\n * methods.\n *\n * @memberof ICAL\n */\nclass UtcOffset {\n /**\n * Creates a new {@link ICAL.UtcOffset} instance from the passed string.\n *\n * @param {String} aString The string to parse\n * @return {Duration} The created utc-offset instance\n */\n static fromString(aString) {\n // -05:00\n let options = {};\n //TODO: support seconds per rfc5545 ?\n options.factor = (aString[0] === '+') ? 1 : -1;\n options.hours = strictParseInt(aString.slice(1, 3));\n options.minutes = strictParseInt(aString.slice(4, 6));\n\n return new UtcOffset(options);\n }\n\n /**\n * Creates a new {@link ICAL.UtcOffset} instance from the passed seconds\n * value.\n *\n * @param {Number} aSeconds The number of seconds to convert\n */\n static fromSeconds(aSeconds) {\n let instance = new UtcOffset();\n instance.fromSeconds(aSeconds);\n return instance;\n }\n\n /**\n * Creates a new ICAL.UtcOffset instance.\n *\n * @param {Object} aData An object with members of the utc offset\n * @param {Number=} aData.hours The hours for the utc offset\n * @param {Number=} aData.minutes The minutes in the utc offset\n * @param {Number=} aData.factor The factor for the utc-offset, either -1 or 1\n */\n constructor(aData) {\n this.fromData(aData);\n }\n\n /**\n * The hours in the utc-offset\n * @type {Number}\n */\n hours = 0;\n\n /**\n * The minutes in the utc-offset\n * @type {Number}\n */\n minutes = 0;\n\n /**\n * The sign of the utc offset, 1 for positive offset, -1 for negative\n * offsets.\n * @type {Number}\n */\n factor = 1;\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"utc-offset\"\n */\n icaltype = \"utc-offset\";\n\n /**\n * Returns a clone of the utc offset object.\n *\n * @return {UtcOffset} The cloned object\n */\n clone() {\n return UtcOffset.fromSeconds(this.toSeconds());\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} aData An object with members of the utc offset\n * @param {Number=} aData.hours The hours for the utc offset\n * @param {Number=} aData.minutes The minutes in the utc offset\n * @param {Number=} aData.factor The factor for the utc-offset, either -1 or 1\n */\n fromData(aData) {\n if (aData) {\n for (let [key, value] of Object.entries(aData)) {\n this[key] = value;\n }\n }\n this._normalize();\n }\n\n /**\n * Sets up the current instance from the given seconds value. The seconds\n * value is truncated to the minute. Offsets are wrapped when the world\n * ends, the hour after UTC+14:00 is UTC-12:00.\n *\n * @param {Number} aSeconds The seconds to convert into an offset\n */\n fromSeconds(aSeconds) {\n let secs = Math.abs(aSeconds);\n\n this.factor = aSeconds < 0 ? -1 : 1;\n this.hours = trunc(secs / 3600);\n\n secs -= (this.hours * 3600);\n this.minutes = trunc(secs / 60);\n return this;\n }\n\n /**\n * Convert the current offset to a value in seconds\n *\n * @return {Number} The offset in seconds\n */\n toSeconds() {\n return this.factor * (60 * this.minutes + 3600 * this.hours);\n }\n\n /**\n * Compare this utc offset with another one.\n *\n * @param {UtcOffset} other The other offset to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(other) {\n let a = this.toSeconds();\n let b = other.toSeconds();\n return (a > b) - (b > a);\n }\n\n _normalize() {\n // Range: 97200 seconds (with 1 hour inbetween)\n let secs = this.toSeconds();\n let factor = this.factor;\n while (secs < -43200) { // = UTC-12:00\n secs += 97200;\n }\n while (secs > 50400) { // = UTC+14:00\n secs -= 97200;\n }\n\n this.fromSeconds(secs);\n\n // Avoid changing the factor when on zero seconds\n if (secs == 0) {\n this.factor = factor;\n }\n }\n\n /**\n * The iCalendar string representation of this utc-offset.\n * @return {String}\n */\n toICALString() {\n return design.icalendar.value['utc-offset'].toICAL(this.toString());\n }\n\n /**\n * The string representation of this utc-offset.\n * @return {String}\n */\n toString() {\n return (this.factor == 1 ? \"+\" : \"-\") + pad2(this.hours) + ':' + pad2(this.minutes);\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Describes a vCard time, which has slight differences to the ICAL.Time.\n * Properties can be null if not specified, for example for dates with\n * reduced accuracy or truncation.\n *\n * Note that currently not all methods are correctly re-implemented for\n * VCardTime. For example, comparison will have undefined results when some\n * members are null.\n *\n * Also, normalization is not yet implemented for this class!\n *\n * @memberof ICAL\n * @extends {Time}\n */\nclass VCardTime extends Time {\n /**\n * Returns a new ICAL.VCardTime instance from a date and/or time string.\n *\n * @param {String} aValue The string to create from\n * @param {String} aIcalType The type for this instance, e.g. date-and-or-time\n * @return {VCardTime} The date/time instance\n */\n static fromDateAndOrTimeString(aValue, aIcalType) {\n function part(v, s, e) {\n return v ? strictParseInt(v.slice(s, s + e)) : null;\n }\n let parts = aValue.split('T');\n let dt = parts[0], tmz = parts[1];\n let splitzone = tmz ? design.vcard.value.time._splitZone(tmz) : [];\n let zone = splitzone[0], tm = splitzone[1];\n\n let dtlen = dt ? dt.length : 0;\n let tmlen = tm ? tm.length : 0;\n\n let hasDashDate = dt && dt[0] == '-' && dt[1] == '-';\n let hasDashTime = tm && tm[0] == '-';\n\n let o = {\n year: hasDashDate ? null : part(dt, 0, 4),\n month: hasDashDate && (dtlen == 4 || dtlen == 7) ? part(dt, 2, 2) : dtlen == 7 ? part(dt, 5, 2) : dtlen == 10 ? part(dt, 5, 2) : null,\n day: dtlen == 5 ? part(dt, 3, 2) : dtlen == 7 && hasDashDate ? part(dt, 5, 2) : dtlen == 10 ? part(dt, 8, 2) : null,\n\n hour: hasDashTime ? null : part(tm, 0, 2),\n minute: hasDashTime && tmlen == 3 ? part(tm, 1, 2) : tmlen > 4 ? hasDashTime ? part(tm, 1, 2) : part(tm, 3, 2) : null,\n second: tmlen == 4 ? part(tm, 2, 2) : tmlen == 6 ? part(tm, 4, 2) : tmlen == 8 ? part(tm, 6, 2) : null\n };\n\n if (zone == 'Z') {\n zone = Timezone.utcTimezone;\n } else if (zone && zone[3] == ':') {\n zone = UtcOffset.fromString(zone);\n } else {\n zone = null;\n }\n\n return new VCardTime(o, zone, aIcalType);\n }\n\n\n /**\n * Creates a new ICAL.VCardTime instance.\n *\n * @param {Object} data The data for the time instance\n * @param {Number=} data.year The year for this date\n * @param {Number=} data.month The month for this date\n * @param {Number=} data.day The day for this date\n * @param {Number=} data.hour The hour for this date\n * @param {Number=} data.minute The minute for this date\n * @param {Number=} data.second The second for this date\n * @param {Timezone|UtcOffset} zone The timezone to use\n * @param {String} icaltype The type for this date/time object\n */\n constructor(data, zone, icaltype) {\n super(data, zone);\n this.icaltype = icaltype || \"date-and-or-time\";\n }\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"vcardtime\"\n */\n icalclass = \"vcardtime\";\n\n /**\n * The type name, to be used in the jCal object.\n * @type {String}\n * @default \"date-and-or-time\"\n */\n icaltype = \"date-and-or-time\";\n\n /**\n * Returns a clone of the vcard date/time object.\n *\n * @return {VCardTime} The cloned object\n */\n clone() {\n return new VCardTime(this._time, this.zone, this.icaltype);\n }\n\n _normalize() {\n return this;\n }\n\n /**\n * @inheritdoc\n */\n utcOffset() {\n if (this.zone instanceof UtcOffset) {\n return this.zone.toSeconds();\n } else {\n return Time.prototype.utcOffset.apply(this, arguments);\n }\n }\n\n /**\n * Returns an RFC 6350 compliant representation of this object.\n *\n * @return {String} vcard date/time string\n */\n toICALString() {\n return design.vcard.value[this.icaltype].toICAL(this.toString());\n }\n\n /**\n * The string representation of this date/time, in jCard form\n * (including : and - separators).\n * @return {String}\n */\n toString() {\n let y = this.year, m = this.month, d = this.day;\n let h = this.hour, mm = this.minute, s = this.second;\n\n let hasYear = y !== null, hasMonth = m !== null, hasDay = d !== null;\n let hasHour = h !== null, hasMinute = mm !== null, hasSecond = s !== null;\n\n let datepart = (hasYear ? pad2(y) + (hasMonth || hasDay ? '-' : '') : (hasMonth || hasDay ? '--' : '')) +\n (hasMonth ? pad2(m) : '') +\n (hasDay ? '-' + pad2(d) : '');\n let timepart = (hasHour ? pad2(h) : '-') + (hasHour && hasMinute ? ':' : '') +\n (hasMinute ? pad2(mm) : '') + (!hasHour && !hasMinute ? '-' : '') +\n (hasMinute && hasSecond ? ':' : '') +\n (hasSecond ? pad2(s) : '');\n\n let zone;\n if (this.zone === Timezone.utcTimezone) {\n zone = 'Z';\n } else if (this.zone instanceof UtcOffset) {\n zone = this.zone.toString();\n } else if (this.zone === Timezone.localTimezone) {\n zone = '';\n } else if (this.zone instanceof Timezone) {\n let offset = UtcOffset.fromSeconds(this.zone.utcOffset(this));\n zone = offset.toString();\n } else {\n zone = '';\n }\n\n switch (this.icaltype) {\n case \"time\":\n return timepart + zone;\n case \"date-and-or-time\":\n case \"date-time\":\n return datepart + (timepart == '--' ? '' : 'T' + timepart + zone);\n case \"date\":\n return datepart;\n }\n return null;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n */\n\n/**\n * An iterator for a single recurrence rule. This class usually doesn't have to be instanciated\n * directly, the convenience method {@link ICAL.Recur#iterator} can be used.\n *\n * @memberof ICAL\n */\nclass RecurIterator {\n static _indexMap = {\n \"BYSECOND\": 0,\n \"BYMINUTE\": 1,\n \"BYHOUR\": 2,\n \"BYDAY\": 3,\n \"BYMONTHDAY\": 4,\n \"BYYEARDAY\": 5,\n \"BYWEEKNO\": 6,\n \"BYMONTH\": 7,\n \"BYSETPOS\": 8\n };\n\n static _expandMap = {\n \"SECONDLY\": [1, 1, 1, 1, 1, 1, 1, 1],\n \"MINUTELY\": [2, 1, 1, 1, 1, 1, 1, 1],\n \"HOURLY\": [2, 2, 1, 1, 1, 1, 1, 1],\n \"DAILY\": [2, 2, 2, 1, 1, 1, 1, 1],\n \"WEEKLY\": [2, 2, 2, 2, 3, 3, 1, 1],\n \"MONTHLY\": [2, 2, 2, 2, 2, 3, 3, 1],\n \"YEARLY\": [2, 2, 2, 2, 2, 2, 2, 2]\n };\n\n static UNKNOWN = 0;\n static CONTRACT = 1;\n static EXPAND = 2;\n static ILLEGAL = 3;\n\n /**\n * Creates a new ICAL.RecurIterator instance. The options object may contain additional members\n * when resuming iteration from a previous run.\n *\n * @param {Object} options The iterator options\n * @param {Recur} options.rule The rule to iterate.\n * @param {Time} options.dtstart The start date of the event.\n * @param {Boolean=} options.initialized When true, assume that options are\n * from a previously constructed iterator. Initialization will not be\n * repeated.\n */\n constructor(options) {\n this.fromData(options);\n }\n\n /**\n * True when iteration is finished.\n * @type {Boolean}\n */\n completed = false;\n\n /**\n * The rule that is being iterated\n * @type {Recur}\n */\n rule = null;\n\n /**\n * The start date of the event being iterated.\n * @type {Time}\n */\n dtstart = null;\n\n /**\n * The last occurrence that was returned from the\n * {@link RecurIterator#next} method.\n * @type {Time}\n */\n last = null;\n\n /**\n * The sequence number from the occurrence\n * @type {Number}\n */\n occurrence_number = 0;\n\n /**\n * The indices used for the {@link ICAL.RecurIterator#by_data} object.\n * @type {Object}\n * @private\n */\n by_indices = null;\n\n /**\n * If true, the iterator has already been initialized\n * @type {Boolean}\n * @private\n */\n initialized = false;\n\n /**\n * The initializd by-data.\n * @type {Object}\n * @private\n */\n by_data = null;\n\n /**\n * The expanded yeardays\n * @type {Array}\n * @private\n */\n days = null;\n\n /**\n * The index in the {@link ICAL.RecurIterator#days} array.\n * @type {Number}\n * @private\n */\n days_index = 0;\n\n /**\n * Initialize the recurrence iterator from the passed data object. This\n * method is usually not called directly, you can initialize the iterator\n * through the constructor.\n *\n * @param {Object} options The iterator options\n * @param {Recur} options.rule The rule to iterate.\n * @param {Time} options.dtstart The start date of the event.\n * @param {Boolean=} options.initialized When true, assume that options are\n * from a previously constructed iterator. Initialization will not be\n * repeated.\n */\n fromData(options) {\n this.rule = formatClassType(options.rule, Recur);\n\n if (!this.rule) {\n throw new Error('iterator requires a (ICAL.Recur) rule');\n }\n\n this.dtstart = formatClassType(options.dtstart, Time);\n\n if (!this.dtstart) {\n throw new Error('iterator requires a (ICAL.Time) dtstart');\n }\n\n if (options.by_data) {\n this.by_data = options.by_data;\n } else {\n this.by_data = clone(this.rule.parts, true);\n }\n\n if (options.occurrence_number)\n this.occurrence_number = options.occurrence_number;\n\n this.days = options.days || [];\n if (options.last) {\n this.last = formatClassType(options.last, Time);\n }\n\n this.by_indices = options.by_indices;\n\n if (!this.by_indices) {\n this.by_indices = {\n \"BYSECOND\": 0,\n \"BYMINUTE\": 0,\n \"BYHOUR\": 0,\n \"BYDAY\": 0,\n \"BYMONTH\": 0,\n \"BYWEEKNO\": 0,\n \"BYMONTHDAY\": 0\n };\n }\n\n this.initialized = options.initialized || false;\n\n if (!this.initialized) {\n try {\n this.init();\n } catch (e) {\n if (e instanceof InvalidRecurrenceRuleError) {\n // Init may error if there are no possible recurrence instances from\n // the rule, but we don't want to bubble this error up. Instead, we\n // create an empty iterator.\n this.completed = true;\n } else {\n // Propagate other errors to consumers.\n throw e;\n }\n }\n }\n }\n\n /**\n * Initialize the iterator\n * @private\n */\n init() {\n this.initialized = true;\n this.last = this.dtstart.clone();\n let parts = this.by_data;\n\n if (\"BYDAY\" in parts) {\n // libical does this earlier when the rule is loaded, but we postpone to\n // now so we can preserve the original order.\n this.sort_byday_rules(parts.BYDAY);\n }\n\n // The BYYEARDAY may only appear with BYDAY\n if (\"BYYEARDAY\" in parts) {\n if (\"BYMONTH\" in parts || \"BYWEEKNO\" in parts ||\n \"BYMONTHDAY\" in parts) {\n throw new Error(\"Invalid BYYEARDAY rule\");\n }\n }\n\n // BYWEEKNO and BYMONTHDAY rule parts may not both appear\n if (\"BYWEEKNO\" in parts && \"BYMONTHDAY\" in parts) {\n throw new Error(\"BYWEEKNO does not fit to BYMONTHDAY\");\n }\n\n // For MONTHLY recurrences (FREQ=MONTHLY) neither BYYEARDAY nor\n // BYWEEKNO may appear.\n if (this.rule.freq == \"MONTHLY\" &&\n (\"BYYEARDAY\" in parts || \"BYWEEKNO\" in parts)) {\n throw new Error(\"For MONTHLY recurrences neither BYYEARDAY nor BYWEEKNO may appear\");\n }\n\n // For WEEKLY recurrences (FREQ=WEEKLY) neither BYMONTHDAY nor\n // BYYEARDAY may appear.\n if (this.rule.freq == \"WEEKLY\" &&\n (\"BYYEARDAY\" in parts || \"BYMONTHDAY\" in parts)) {\n throw new Error(\"For WEEKLY recurrences neither BYMONTHDAY nor BYYEARDAY may appear\");\n }\n\n // BYYEARDAY may only appear in YEARLY rules\n if (this.rule.freq != \"YEARLY\" && \"BYYEARDAY\" in parts) {\n throw new Error(\"BYYEARDAY may only appear in YEARLY rules\");\n }\n\n this.last.second = this.setup_defaults(\"BYSECOND\", \"SECONDLY\", this.dtstart.second);\n this.last.minute = this.setup_defaults(\"BYMINUTE\", \"MINUTELY\", this.dtstart.minute);\n this.last.hour = this.setup_defaults(\"BYHOUR\", \"HOURLY\", this.dtstart.hour);\n this.last.day = this.setup_defaults(\"BYMONTHDAY\", \"DAILY\", this.dtstart.day);\n this.last.month = this.setup_defaults(\"BYMONTH\", \"MONTHLY\", this.dtstart.month);\n\n if (this.rule.freq == \"WEEKLY\") {\n if (\"BYDAY\" in parts) {\n let [, dow] = this.ruleDayOfWeek(parts.BYDAY[0], this.rule.wkst);\n let wkdy = dow - this.last.dayOfWeek(this.rule.wkst);\n if ((this.last.dayOfWeek(this.rule.wkst) < dow && wkdy >= 0) || wkdy < 0) {\n // Initial time is after first day of BYDAY data\n this.last.day += wkdy;\n }\n } else {\n let dayName = Recur.numericDayToIcalDay(this.dtstart.dayOfWeek());\n parts.BYDAY = [dayName];\n }\n }\n\n if (this.rule.freq == \"YEARLY\") {\n // Some yearly recurrence rules may be specific enough to not actually\n // occur on a yearly basis, e.g. the 29th day of February or the fifth\n // Monday of a given month. The standard isn't clear on the intended\n // behavior in these cases, but `libical` at least will iterate until it\n // finds a matching year.\n // CAREFUL: Some rules may specify an occurrence that can never happen,\n // e.g. the first Monday of April so long as it falls on the 15th\n // through the 21st. Detecting these is non-trivial, so ensure that we\n // stop iterating at some point.\n const untilYear = this.rule.until ? this.rule.until.year : 20000;\n while (this.last.year <= untilYear) {\n this.expand_year_days(this.last.year);\n if (this.days.length > 0) {\n break;\n }\n this.increment_year(this.rule.interval);\n }\n\n if (this.days.length == 0) {\n throw new InvalidRecurrenceRuleError();\n }\n\n // If there's no occurrence in this year, try the following years. This\n // would only happen looking for day 366 or -366.\n if (!this._nextByYearDay() && !this.next_year() && !this.next_year() && !this.next_year()) {\n // This should not be possible, but just in case it is, stop.\n throw new InvalidRecurrenceRuleError();\n }\n }\n\n if (this.rule.freq == \"MONTHLY\") {\n if (this.has_by_data(\"BYDAY\")) {\n let tempLast = null;\n let initLast = this.last.clone();\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n\n // Check every weekday in BYDAY with relative dow and pos.\n for (let bydow of this.by_data.BYDAY) {\n this.last = initLast.clone();\n let [pos, dow] = this.ruleDayOfWeek(bydow);\n let dayOfMonth = this.last.nthWeekDay(dow, pos);\n\n // If |pos| >= 6, the byday is invalid for a monthly rule.\n if (pos >= 6 || pos <= -6) {\n throw new Error(\"Malformed values in BYDAY part\");\n }\n\n // If a Byday with pos=+/-5 is not in the current month it\n // must be searched in the next months.\n if (dayOfMonth > daysInMonth || dayOfMonth <= 0) {\n // Skip if we have already found a \"last\" in this month.\n if (tempLast && tempLast.month == initLast.month) {\n continue;\n }\n while (dayOfMonth > daysInMonth || dayOfMonth <= 0) {\n this.increment_month();\n daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n dayOfMonth = this.last.nthWeekDay(dow, pos);\n }\n }\n\n this.last.day = dayOfMonth;\n if (!tempLast || this.last.compare(tempLast) < 0) {\n tempLast = this.last.clone();\n }\n }\n this.last = tempLast.clone();\n\n //XXX: This feels like a hack, but we need to initialize\n // the BYMONTHDAY case correctly and byDayAndMonthDay handles\n // this case. It accepts a special flag which will avoid incrementing\n // the initial value without the flag days that match the start time\n // would be missed.\n if (this.has_by_data('BYMONTHDAY')) {\n this._byDayAndMonthDay(true);\n }\n\n if (this.last.day > daysInMonth || this.last.day == 0) {\n throw new Error(\"Malformed values in BYDAY part\");\n }\n } else if (this.has_by_data(\"BYMONTHDAY\")) {\n // Change the day value so that normalisation won't change the month.\n this.last.day = 1;\n\n // Get a sorted list of days in the starting month that match the rule.\n let normalized = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n ).filter(d => d >= this.last.day);\n\n if (normalized.length) {\n // There's at least one valid day, use it.\n this.last.day = normalized[0];\n this.by_data.BYMONTHDAY = normalized;\n } else {\n // There's no occurrence in this month, find the next valid month.\n // The longest possible sequence of skipped months is February-April-June,\n // so we might need to call next_month up to three times.\n if (!this.next_month() && !this.next_month() && !this.next_month()) {\n throw new InvalidRecurrenceRuleError();\n }\n }\n }\n }\n }\n\n /**\n * Retrieve the next occurrence from the iterator.\n * @return {Time}\n */\n next(again = false) {\n let before = (this.last ? this.last.clone() : null);\n\n if ((this.rule.count && this.occurrence_number >= this.rule.count) ||\n (this.rule.until && this.last.compare(this.rule.until) > 0)) {\n this.completed = true;\n }\n\n if (this.completed) {\n return null;\n }\n\n if (this.occurrence_number == 0 && this.last.compare(this.dtstart) >= 0) {\n // First of all, give the instance that was initialized\n this.occurrence_number++;\n return this.last;\n }\n\n let valid;\n let invalid_count = 0;\n do {\n valid = 1;\n\n switch (this.rule.freq) {\n case \"SECONDLY\":\n this.next_second();\n break;\n case \"MINUTELY\":\n this.next_minute();\n break;\n case \"HOURLY\":\n this.next_hour();\n break;\n case \"DAILY\":\n this.next_day();\n break;\n case \"WEEKLY\":\n this.next_week();\n break;\n case \"MONTHLY\":\n valid = this.next_month();\n if (valid) {\n invalid_count = 0;\n } else if (++invalid_count == 336) {\n // We've been through all 91 month variations and not found a recurrence. Stop.\n // (12 months and 29-day February × 7 starting days.)\n this.completed = true;\n return null;\n }\n break;\n case \"YEARLY\":\n valid = this.next_year();\n if (valid) {\n invalid_count = 0;\n } else if (++invalid_count == 28) {\n // We've been through all 14 year variations and not found a recurrence. Stop.\n // (365-day and 366-day years × 7 starting days.)\n this.completed = true;\n return null;\n }\n break;\n\n default:\n return null;\n }\n } while (!this.check_contracting_rules() ||\n this.last.compare(this.dtstart) < 0 ||\n !valid);\n\n if (this.last.compare(before) == 0) {\n if (again) {\n throw new Error(\"Same occurrence found twice, protecting you from death by recursion\");\n }\n this.next(true);\n }\n\n if (this.rule.until && this.last.compare(this.rule.until) > 0) {\n this.completed = true;\n return null;\n } else {\n this.occurrence_number++;\n return this.last;\n }\n }\n\n next_second() {\n return this.next_generic(\"BYSECOND\", \"SECONDLY\", \"second\", \"minute\");\n }\n\n increment_second(inc) {\n return this.increment_generic(inc, \"second\", 60, \"minute\");\n }\n\n next_minute() {\n return this.next_generic(\"BYMINUTE\", \"MINUTELY\",\n \"minute\", \"hour\", \"next_second\");\n }\n\n increment_minute(inc) {\n return this.increment_generic(inc, \"minute\", 60, \"hour\");\n }\n\n next_hour() {\n return this.next_generic(\"BYHOUR\", \"HOURLY\", \"hour\",\n \"monthday\", \"next_minute\");\n }\n\n increment_hour(inc) {\n this.increment_generic(inc, \"hour\", 24, \"monthday\");\n }\n\n next_day() {\n let this_freq = (this.rule.freq == \"DAILY\");\n\n if (this.next_hour() == 0) {\n return 0;\n }\n\n if (this_freq) {\n this.increment_monthday(this.rule.interval);\n } else {\n this.increment_monthday(1);\n }\n\n return 0;\n }\n\n next_week() {\n let end_of_data = 0;\n\n if (this.next_weekday_by_week() == 0) {\n return end_of_data;\n }\n\n if (this.has_by_data(\"BYWEEKNO\")) {\n this.by_indices.BYWEEKNO++;\n\n if (this.by_indices.BYWEEKNO == this.by_data.BYWEEKNO.length) {\n this.by_indices.BYWEEKNO = 0;\n end_of_data = 1;\n }\n\n // HACK should be first month of the year\n this.last.month = 1;\n this.last.day = 1;\n\n let week_no = this.by_data.BYWEEKNO[this.by_indices.BYWEEKNO];\n\n this.last.day += 7 * week_no;\n\n if (end_of_data) {\n this.increment_year(1);\n }\n } else {\n // Jump to the next week\n this.increment_monthday(7 * this.rule.interval);\n }\n\n return end_of_data;\n }\n\n /**\n * Normalize each by day rule for a given year/month.\n * Takes into account ordering and negative rules\n *\n * @private\n * @param {Number} year Current year.\n * @param {Number} month Current month.\n * @param {Array} rules Array of rules.\n *\n * @return {Array} sorted and normalized rules.\n * Negative rules will be expanded to their\n * correct positive values for easier processing.\n */\n normalizeByMonthDayRules(year, month, rules) {\n let daysInMonth = Time.daysInMonth(month, year);\n\n // XXX: This is probably bad for performance to allocate\n // a new array for each month we scan, if possible\n // we should try to optimize this...\n let newRules = [];\n\n let ruleIdx = 0;\n let len = rules.length;\n let rule;\n\n for (; ruleIdx < len; ruleIdx++) {\n rule = parseInt(rules[ruleIdx], 10);\n if (isNaN(rule)) {\n throw new Error('Invalid BYMONTHDAY value');\n }\n\n // if this rule falls outside of given\n // month discard it.\n if (Math.abs(rule) > daysInMonth) {\n continue;\n }\n\n // negative case\n if (rule < 0) {\n // we add (not subtract it is a negative number)\n // one from the rule because 1 === last day of month\n rule = daysInMonth + (rule + 1);\n } else if (rule === 0) {\n // skip zero: it is invalid.\n continue;\n }\n\n // only add unique items...\n if (newRules.indexOf(rule) === -1) {\n newRules.push(rule);\n }\n\n }\n\n // unique and sort\n return newRules.sort(function(a, b) { return a - b; });\n }\n\n /**\n * NOTES:\n * We are given a list of dates in the month (BYMONTHDAY) (23, etc..)\n * Also we are given a list of days (BYDAY) (MO, 2SU, etc..) when\n * both conditions match a given date (this.last.day) iteration stops.\n *\n * @private\n * @param {Boolean=} isInit When given true will not increment the\n * current day (this.last).\n */\n _byDayAndMonthDay(isInit) {\n let byMonthDay; // setup in initMonth\n let byDay = this.by_data.BYDAY;\n\n let date;\n let dateIdx = 0;\n let dateLen; // setup in initMonth\n let dayLen = byDay.length;\n\n // we are not valid by default\n let dataIsValid = 0;\n\n let daysInMonth;\n let self = this;\n // we need a copy of this, because a DateTime gets normalized\n // automatically if the day is out of range. At some points we\n // set the last day to 0 to start counting.\n let lastDay = this.last.day;\n\n function initMonth() {\n daysInMonth = Time.daysInMonth(\n self.last.month, self.last.year\n );\n\n byMonthDay = self.normalizeByMonthDayRules(\n self.last.year,\n self.last.month,\n self.by_data.BYMONTHDAY\n );\n\n dateLen = byMonthDay.length;\n\n // For the case of more than one occurrence in one month\n // we have to be sure to start searching after the last\n // found date or at the last BYMONTHDAY, unless we are\n // initializing the iterator because in this case we have\n // to consider the last found date too.\n while (byMonthDay[dateIdx] <= lastDay &&\n !(isInit && byMonthDay[dateIdx] == lastDay) &&\n dateIdx < dateLen - 1) {\n dateIdx++;\n }\n }\n\n function nextMonth() {\n // since the day is incremented at the start\n // of the loop below, we need to start at 0\n lastDay = 0;\n self.increment_month();\n dateIdx = 0;\n initMonth();\n }\n\n initMonth();\n\n // should come after initMonth\n if (isInit) {\n lastDay -= 1;\n }\n\n // Use a counter to avoid an infinite loop with malformed rules.\n // Stop checking after 4 years so we consider also a leap year.\n let monthsCounter = 48;\n\n while (!dataIsValid && monthsCounter) {\n monthsCounter--;\n // increment the current date. This is really\n // important otherwise we may fall into the infinite\n // loop trap. The initial date takes care of the case\n // where the current date is the date we are looking\n // for.\n date = lastDay + 1;\n\n if (date > daysInMonth) {\n nextMonth();\n continue;\n }\n\n // find next date\n let next = byMonthDay[dateIdx++];\n\n // this logic is dependent on the BYMONTHDAYS\n // being in order (which is done by #normalizeByMonthDayRules)\n if (next >= date) {\n // if the next month day is in the future jump to it.\n lastDay = next;\n } else {\n // in this case the 'next' monthday has past\n // we must move to the month.\n nextMonth();\n continue;\n }\n\n // Now we can loop through the day rules to see\n // if one matches the current month date.\n for (let dayIdx = 0; dayIdx < dayLen; dayIdx++) {\n let parts = this.ruleDayOfWeek(byDay[dayIdx]);\n let pos = parts[0];\n let dow = parts[1];\n\n this.last.day = lastDay;\n if (this.last.isNthWeekDay(dow, pos)) {\n // when we find the valid one we can mark\n // the conditions as met and break the loop.\n // (Because we have this condition above\n // it will also break the parent loop).\n dataIsValid = 1;\n break;\n }\n }\n\n // It is completely possible that the combination\n // cannot be matched in the current month.\n // When we reach the end of possible combinations\n // in the current month we iterate to the next one.\n // since dateIdx is incremented right after getting\n // \"next\", we don't need dateLen -1 here.\n if (!dataIsValid && dateIdx === dateLen) {\n nextMonth();\n continue;\n }\n }\n\n if (monthsCounter <= 0) {\n // Checked 4 years without finding a Byday that matches\n // a Bymonthday. Maybe the rule is not correct.\n throw new Error(\"Malformed values in BYDAY combined with BYMONTHDAY parts\");\n }\n\n\n return dataIsValid;\n }\n\n next_month() {\n let data_valid = 1;\n\n if (this.next_hour() == 0) {\n return data_valid;\n }\n\n if (this.has_by_data(\"BYDAY\") && this.has_by_data(\"BYMONTHDAY\")) {\n data_valid = this._byDayAndMonthDay();\n } else if (this.has_by_data(\"BYDAY\")) {\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n let setpos = 0;\n let setpos_total = 0;\n\n if (this.has_by_data(\"BYSETPOS\")) {\n let last_day = this.last.day;\n for (let day = 1; day <= daysInMonth; day++) {\n this.last.day = day;\n if (this.is_day_in_byday(this.last)) {\n setpos_total++;\n if (day <= last_day) {\n setpos++;\n }\n }\n }\n this.last.day = last_day;\n }\n\n data_valid = 0;\n let day;\n for (day = this.last.day + 1; day <= daysInMonth; day++) {\n this.last.day = day;\n\n if (this.is_day_in_byday(this.last)) {\n if (!this.has_by_data(\"BYSETPOS\") ||\n this.check_set_position(++setpos) ||\n this.check_set_position(setpos - setpos_total - 1)) {\n\n data_valid = 1;\n break;\n }\n }\n }\n\n if (day > daysInMonth) {\n this.last.day = 1;\n this.increment_month();\n\n if (this.is_day_in_byday(this.last)) {\n if (!this.has_by_data(\"BYSETPOS\") || this.check_set_position(1)) {\n data_valid = 1;\n }\n } else {\n data_valid = 0;\n }\n }\n } else if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_indices.BYMONTHDAY++;\n\n if (this.by_indices.BYMONTHDAY >= this.by_data.BYMONTHDAY.length) {\n this.by_indices.BYMONTHDAY = 0;\n this.increment_month();\n if (this.by_indices.BYMONTHDAY >= this.by_data.BYMONTHDAY.length) {\n return 0;\n }\n }\n\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n let day = this.by_data.BYMONTHDAY[this.by_indices.BYMONTHDAY];\n\n if (day < 0) {\n day = daysInMonth + day + 1;\n }\n\n if (day > daysInMonth) {\n this.last.day = 1;\n data_valid = this.is_day_in_byday(this.last);\n } else {\n this.last.day = day;\n }\n } else {\n this.increment_month();\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n if (this.by_data.BYMONTHDAY[0] > daysInMonth) {\n data_valid = 0;\n } else {\n this.last.day = this.by_data.BYMONTHDAY[0];\n }\n }\n\n return data_valid;\n }\n\n next_weekday_by_week() {\n let end_of_data = 0;\n\n if (this.next_hour() == 0) {\n return end_of_data;\n }\n\n if (!this.has_by_data(\"BYDAY\")) {\n return 1;\n }\n\n for (;;) {\n let tt = new Time();\n this.by_indices.BYDAY++;\n\n if (this.by_indices.BYDAY == Object.keys(this.by_data.BYDAY).length) {\n this.by_indices.BYDAY = 0;\n end_of_data = 1;\n }\n\n let coded_day = this.by_data.BYDAY[this.by_indices.BYDAY];\n let parts = this.ruleDayOfWeek(coded_day);\n let dow = parts[1];\n\n dow -= this.rule.wkst;\n\n if (dow < 0) {\n dow += 7;\n }\n\n tt.year = this.last.year;\n tt.month = this.last.month;\n tt.day = this.last.day;\n\n let startOfWeek = tt.startDoyWeek(this.rule.wkst);\n\n if (dow + startOfWeek < 1) {\n // The selected date is in the previous year\n if (!end_of_data) {\n continue;\n }\n }\n\n let next = Time.fromDayOfYear(startOfWeek + dow, this.last.year);\n\n /**\n * The normalization horrors below are due to\n * the fact that when the year/month/day changes\n * it can effect the other operations that come after.\n */\n this.last.year = next.year;\n this.last.month = next.month;\n this.last.day = next.day;\n\n return end_of_data;\n }\n }\n\n next_year() {\n if (this.next_hour() == 0) {\n return 0;\n }\n\n if (this.days.length == 0 || ++this.days_index == this.days.length) {\n this.days_index = 0;\n this.increment_year(this.rule.interval);\n if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_data.BYMONTHDAY = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n );\n }\n this.expand_year_days(this.last.year);\n if (this.days.length == 0) {\n return 0;\n }\n }\n\n return this._nextByYearDay();\n }\n\n _nextByYearDay() {\n let doy = this.days[this.days_index];\n let year = this.last.year;\n\n if (Math.abs(doy) == 366 && !Time.isLeapYear(this.last.year)) {\n return 0;\n }\n\n if (doy < 1) {\n // Time.fromDayOfYear(doy, year) indexes relative to the\n // start of the given year. That is different from the\n // semantics of BYYEARDAY where negative indexes are an\n // offset from the end of the given year.\n doy += 1;\n year += 1;\n }\n let next = Time.fromDayOfYear(doy, year);\n this.last.day = next.day;\n this.last.month = next.month;\n\n return 1;\n }\n\n /**\n * @param dow (eg: '1TU', '-1MO')\n * @param {weekDay=} aWeekStart The week start weekday\n * @return [pos, numericDow] (eg: [1, 3]) numericDow is relative to aWeekStart\n */\n ruleDayOfWeek(dow, aWeekStart) {\n let matches = dow.match(/([+-]?[0-9])?(MO|TU|WE|TH|FR|SA|SU)/);\n if (matches) {\n let pos = parseInt(matches[1] || 0, 10);\n dow = Recur.icalDayToNumericDay(matches[2], aWeekStart);\n return [pos, dow];\n } else {\n return [0, 0];\n }\n }\n\n next_generic(aRuleType, aInterval, aDateAttr, aFollowingAttr, aPreviousIncr) {\n let has_by_rule = (aRuleType in this.by_data);\n let this_freq = (this.rule.freq == aInterval);\n let end_of_data = 0;\n\n if (aPreviousIncr && this[aPreviousIncr]() == 0) {\n return end_of_data;\n }\n\n if (has_by_rule) {\n this.by_indices[aRuleType]++;\n let dta = this.by_data[aRuleType];\n\n if (this.by_indices[aRuleType] == dta.length) {\n this.by_indices[aRuleType] = 0;\n end_of_data = 1;\n }\n this.last[aDateAttr] = dta[this.by_indices[aRuleType]];\n } else if (this_freq) {\n this[\"increment_\" + aDateAttr](this.rule.interval);\n }\n\n if (has_by_rule && end_of_data && this_freq) {\n this[\"increment_\" + aFollowingAttr](1);\n }\n\n return end_of_data;\n }\n\n increment_monthday(inc) {\n for (let i = 0; i < inc; i++) {\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n this.last.day++;\n\n if (this.last.day > daysInMonth) {\n this.last.day -= daysInMonth;\n this.increment_month();\n }\n }\n }\n\n increment_month() {\n this.last.day = 1;\n if (this.has_by_data(\"BYMONTH\")) {\n this.by_indices.BYMONTH++;\n\n if (this.by_indices.BYMONTH == this.by_data.BYMONTH.length) {\n this.by_indices.BYMONTH = 0;\n this.increment_year(1);\n }\n\n this.last.month = this.by_data.BYMONTH[this.by_indices.BYMONTH];\n } else {\n if (this.rule.freq == \"MONTHLY\") {\n this.last.month += this.rule.interval;\n } else {\n this.last.month++;\n }\n\n this.last.month--;\n let years = trunc(this.last.month / 12);\n this.last.month %= 12;\n this.last.month++;\n\n if (years != 0) {\n this.increment_year(years);\n }\n }\n\n if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_data.BYMONTHDAY = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n );\n }\n }\n\n increment_year(inc) {\n // Don't jump into the next month if this.last is Feb 29.\n this.last.day = 1;\n this.last.year += inc;\n }\n\n increment_generic(inc, aDateAttr, aFactor, aNextIncrement) {\n this.last[aDateAttr] += inc;\n let nextunit = trunc(this.last[aDateAttr] / aFactor);\n this.last[aDateAttr] %= aFactor;\n if (nextunit != 0) {\n this[\"increment_\" + aNextIncrement](nextunit);\n }\n }\n\n has_by_data(aRuleType) {\n return (aRuleType in this.rule.parts);\n }\n\n expand_year_days(aYear) {\n let t = new Time();\n this.days = [];\n\n // We need our own copy with a few keys set\n let parts = {};\n let rules = [\"BYDAY\", \"BYWEEKNO\", \"BYMONTHDAY\", \"BYMONTH\", \"BYYEARDAY\"];\n for (let part of rules) {\n if (part in this.rule.parts) {\n parts[part] = this.rule.parts[part];\n }\n }\n\n if (\"BYMONTH\" in parts && \"BYWEEKNO\" in parts) {\n let valid = 1;\n let validWeeks = {};\n t.year = aYear;\n t.isDate = true;\n\n for (let monthIdx = 0; monthIdx < this.by_data.BYMONTH.length; monthIdx++) {\n let month = this.by_data.BYMONTH[monthIdx];\n t.month = month;\n t.day = 1;\n let first_week = t.weekNumber(this.rule.wkst);\n t.day = Time.daysInMonth(month, aYear);\n let last_week = t.weekNumber(this.rule.wkst);\n for (monthIdx = first_week; monthIdx < last_week; monthIdx++) {\n validWeeks[monthIdx] = 1;\n }\n }\n\n for (let weekIdx = 0; weekIdx < this.by_data.BYWEEKNO.length && valid; weekIdx++) {\n let weekno = this.by_data.BYWEEKNO[weekIdx];\n if (weekno < 52) {\n valid &= validWeeks[weekIdx];\n } else {\n valid = 0;\n }\n }\n\n if (valid) {\n delete parts.BYMONTH;\n } else {\n delete parts.BYWEEKNO;\n }\n }\n\n let partCount = Object.keys(parts).length;\n\n if (partCount == 0) {\n let t1 = this.dtstart.clone();\n t1.year = this.last.year;\n this.days.push(t1.dayOfYear());\n } else if (partCount == 1 && \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let t2 = this.dtstart.clone();\n t2.year = aYear;\n t2.month = month;\n t2.isDate = true;\n this.days.push(t2.dayOfYear());\n }\n } else if (partCount == 1 && \"BYMONTHDAY\" in parts) {\n for (let monthday of this.by_data.BYMONTHDAY) {\n let t3 = this.dtstart.clone();\n if (monthday < 0) {\n let daysInMonth = Time.daysInMonth(t3.month, aYear);\n monthday = monthday + daysInMonth + 1;\n }\n t3.day = monthday;\n t3.year = aYear;\n t3.isDate = true;\n this.days.push(t3.dayOfYear());\n }\n } else if (partCount == 2 &&\n \"BYMONTHDAY\" in parts &&\n \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let daysInMonth = Time.daysInMonth(month, aYear);\n for (let monthday of this.by_data.BYMONTHDAY) {\n if (monthday < 0) {\n monthday = monthday + daysInMonth + 1;\n }\n t.day = monthday;\n t.month = month;\n t.year = aYear;\n t.isDate = true;\n\n this.days.push(t.dayOfYear());\n }\n }\n } else if (partCount == 1 && \"BYWEEKNO\" in parts) ; else if (partCount == 2 &&\n \"BYWEEKNO\" in parts &&\n \"BYMONTHDAY\" in parts) ; else if (partCount == 1 && \"BYDAY\" in parts) {\n this.days = this.days.concat(this.expand_by_day(aYear));\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let daysInMonth = Time.daysInMonth(month, aYear);\n\n t.year = aYear;\n t.month = month;\n t.day = 1;\n t.isDate = true;\n\n let first_dow = t.dayOfWeek();\n let doy_offset = t.dayOfYear() - 1;\n\n t.day = daysInMonth;\n let last_dow = t.dayOfWeek();\n\n if (this.has_by_data(\"BYSETPOS\")) {\n let by_month_day = [];\n for (let day = 1; day <= daysInMonth; day++) {\n t.day = day;\n if (this.is_day_in_byday(t)) {\n by_month_day.push(day);\n }\n }\n\n for (let spIndex = 0; spIndex < by_month_day.length; spIndex++) {\n if (this.check_set_position(spIndex + 1) ||\n this.check_set_position(spIndex - by_month_day.length)) {\n this.days.push(doy_offset + by_month_day[spIndex]);\n }\n }\n } else {\n for (let coded_day of this.by_data.BYDAY) {\n let bydayParts = this.ruleDayOfWeek(coded_day);\n let pos = bydayParts[0];\n let dow = bydayParts[1];\n let month_day;\n\n let first_matching_day = ((dow + 7 - first_dow) % 7) + 1;\n let last_matching_day = daysInMonth - ((last_dow + 7 - dow) % 7);\n\n if (pos == 0) {\n for (let day = first_matching_day; day <= daysInMonth; day += 7) {\n this.days.push(doy_offset + day);\n }\n } else if (pos > 0) {\n month_day = first_matching_day + (pos - 1) * 7;\n\n if (month_day <= daysInMonth) {\n this.days.push(doy_offset + month_day);\n }\n } else {\n month_day = last_matching_day + (pos + 1) * 7;\n\n if (month_day > 0) {\n this.days.push(doy_offset + month_day);\n }\n }\n }\n }\n }\n // Return dates in order of occurrence (1,2,3,...) instead\n // of by groups of weekdays (1,8,15,...,2,9,16,...).\n this.days.sort(function(a, b) { return a - b; }); // Comparator function allows to sort numbers.\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYMONTHDAY\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n if (this.by_data.BYMONTHDAY.indexOf(tt.day) >= 0) {\n this.days.push(day);\n }\n }\n } else if (partCount == 3 &&\n \"BYDAY\" in parts &&\n \"BYMONTHDAY\" in parts &&\n \"BYMONTH\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n\n if (this.by_data.BYMONTH.indexOf(tt.month) >= 0 &&\n this.by_data.BYMONTHDAY.indexOf(tt.day) >= 0) {\n this.days.push(day);\n }\n }\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYWEEKNO\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n let weekno = tt.weekNumber(this.rule.wkst);\n\n if (this.by_data.BYWEEKNO.indexOf(weekno)) {\n this.days.push(day);\n }\n }\n } else if (partCount == 3 &&\n \"BYDAY\" in parts &&\n \"BYWEEKNO\" in parts &&\n \"BYMONTHDAY\" in parts) ; else if (partCount == 1 && \"BYYEARDAY\" in parts) {\n this.days = this.days.concat(this.by_data.BYYEARDAY);\n } else if (partCount == 2 && \"BYYEARDAY\" in parts && \"BYDAY\" in parts) {\n let daysInYear = Time.isLeapYear(aYear) ? 366 : 365;\n let expandedDays = new Set(this.expand_by_day(aYear));\n\n for (let doy of this.by_data.BYYEARDAY) {\n if (doy < 0) {\n doy += daysInYear + 1;\n }\n\n if (expandedDays.has(doy)) {\n this.days.push(doy);\n }\n }\n } else {\n this.days = [];\n }\n\n let daysInYear = Time.isLeapYear(aYear) ? 366 : 365;\n this.days.sort((a, b) => {\n if (a < 0) a += daysInYear + 1;\n if (b < 0) b += daysInYear + 1;\n return a - b;\n });\n\n return 0;\n }\n\n expand_by_day(aYear) {\n\n let days_list = [];\n let tmp = this.last.clone();\n\n tmp.year = aYear;\n tmp.month = 1;\n tmp.day = 1;\n tmp.isDate = true;\n\n let start_dow = tmp.dayOfWeek();\n\n tmp.month = 12;\n tmp.day = 31;\n tmp.isDate = true;\n\n let end_dow = tmp.dayOfWeek();\n let end_year_day = tmp.dayOfYear();\n\n for (let day of this.by_data.BYDAY) {\n let parts = this.ruleDayOfWeek(day);\n let pos = parts[0];\n let dow = parts[1];\n\n if (pos == 0) {\n let tmp_start_doy = ((dow + 7 - start_dow) % 7) + 1;\n\n for (let doy = tmp_start_doy; doy <= end_year_day; doy += 7) {\n days_list.push(doy);\n }\n\n } else if (pos > 0) {\n let first;\n if (dow >= start_dow) {\n first = dow - start_dow + 1;\n } else {\n first = dow - start_dow + 8;\n }\n\n days_list.push(first + (pos - 1) * 7);\n } else {\n let last;\n pos = -pos;\n\n if (dow <= end_dow) {\n last = end_year_day - end_dow + dow;\n } else {\n last = end_year_day - end_dow + dow - 7;\n }\n\n days_list.push(last - (pos - 1) * 7);\n }\n }\n return days_list;\n }\n\n is_day_in_byday(tt) {\n if (this.by_data.BYDAY) {\n for (let day of this.by_data.BYDAY) {\n let parts = this.ruleDayOfWeek(day);\n let pos = parts[0];\n let dow = parts[1];\n let this_dow = tt.dayOfWeek();\n\n if ((pos == 0 && dow == this_dow) ||\n (tt.nthWeekDay(dow, pos) == tt.day)) {\n return 1;\n }\n }\n }\n\n return 0;\n }\n\n /**\n * Checks if given value is in BYSETPOS.\n *\n * @private\n * @param {Numeric} aPos position to check for.\n * @return {Boolean} false unless BYSETPOS rules exist\n * and the given value is present in rules.\n */\n check_set_position(aPos) {\n if (this.has_by_data('BYSETPOS')) {\n let idx = this.by_data.BYSETPOS.indexOf(aPos);\n // negative numbers are not false-y\n return idx !== -1;\n }\n return false;\n }\n\n sort_byday_rules(aRules) {\n for (let i = 0; i < aRules.length; i++) {\n for (let j = 0; j < i; j++) {\n let one = this.ruleDayOfWeek(aRules[j], this.rule.wkst)[1];\n let two = this.ruleDayOfWeek(aRules[i], this.rule.wkst)[1];\n\n if (one > two) {\n let tmp = aRules[i];\n aRules[i] = aRules[j];\n aRules[j] = tmp;\n }\n }\n }\n }\n\n check_contract_restriction(aRuleType, v) {\n let indexMapValue = RecurIterator._indexMap[aRuleType];\n let ruleMapValue = RecurIterator._expandMap[this.rule.freq][indexMapValue];\n let pass = false;\n\n if (aRuleType in this.by_data &&\n ruleMapValue == RecurIterator.CONTRACT) {\n\n let ruleType = this.by_data[aRuleType];\n\n for (let bydata of ruleType) {\n if (bydata == v) {\n pass = true;\n break;\n }\n }\n } else {\n // Not a contracting byrule or has no data, test passes\n pass = true;\n }\n return pass;\n }\n\n check_contracting_rules() {\n let dow = this.last.dayOfWeek();\n let weekNo = this.last.weekNumber(this.rule.wkst);\n let doy = this.last.dayOfYear();\n\n return (this.check_contract_restriction(\"BYSECOND\", this.last.second) &&\n this.check_contract_restriction(\"BYMINUTE\", this.last.minute) &&\n this.check_contract_restriction(\"BYHOUR\", this.last.hour) &&\n this.check_contract_restriction(\"BYDAY\", Recur.numericDayToIcalDay(dow)) &&\n this.check_contract_restriction(\"BYWEEKNO\", weekNo) &&\n this.check_contract_restriction(\"BYMONTHDAY\", this.last.day) &&\n this.check_contract_restriction(\"BYMONTH\", this.last.month) &&\n this.check_contract_restriction(\"BYYEARDAY\", doy));\n }\n\n setup_defaults(aRuleType, req, deftime) {\n let indexMapValue = RecurIterator._indexMap[aRuleType];\n let ruleMapValue = RecurIterator._expandMap[this.rule.freq][indexMapValue];\n\n if (ruleMapValue != RecurIterator.CONTRACT) {\n if (!(aRuleType in this.by_data)) {\n this.by_data[aRuleType] = [deftime];\n }\n if (this.rule.freq != req) {\n return this.by_data[aRuleType][0];\n }\n }\n return deftime;\n }\n\n /**\n * Convert iterator into a serialize-able object. Will preserve current\n * iteration sequence to ensure the seamless continuation of the recurrence\n * rule.\n * @return {Object}\n */\n toJSON() {\n let result = Object.create(null);\n\n result.initialized = this.initialized;\n result.rule = this.rule.toJSON();\n result.dtstart = this.dtstart.toJSON();\n result.by_data = this.by_data;\n result.days = this.days;\n result.last = this.last.toJSON();\n result.by_indices = this.by_indices;\n result.occurrence_number = this.occurrence_number;\n\n return result;\n }\n}\n\n/**\n * An error indicating that a recurrence rule is invalid and produces no\n * occurrences.\n *\n * @extends {Error}\n * @class\n */\nclass InvalidRecurrenceRuleError extends Error {\n constructor() {\n super(\"Recurrence rule has no valid occurrences\");\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").frequencyValues} frequencyValues\n * Imports the 'frequencyValues' type from the \"types.js\" module\n */\n\nconst VALID_DAY_NAMES = /^(SU|MO|TU|WE|TH|FR|SA)$/;\nconst VALID_BYDAY_PART = /^([+-])?(5[0-3]|[1-4][0-9]|[1-9])?(SU|MO|TU|WE|TH|FR|SA)$/;\nconst DOW_MAP = {\n SU: Time.SUNDAY,\n MO: Time.MONDAY,\n TU: Time.TUESDAY,\n WE: Time.WEDNESDAY,\n TH: Time.THURSDAY,\n FR: Time.FRIDAY,\n SA: Time.SATURDAY\n};\n\nconst REVERSE_DOW_MAP = Object.fromEntries(Object.entries(DOW_MAP).map(entry => entry.reverse()));\n\nconst ALLOWED_FREQ = ['SECONDLY', 'MINUTELY', 'HOURLY',\n 'DAILY', 'WEEKLY', 'MONTHLY', 'YEARLY'];\n\n/**\n * This class represents the \"recur\" value type, used for example by RRULE. It provides methods to\n * calculate occurrences among others.\n *\n * @memberof ICAL\n */\nclass Recur {\n /**\n * Creates a new {@link ICAL.Recur} instance from the passed string.\n *\n * @param {String} string The string to parse\n * @return {Recur} The created recurrence instance\n */\n static fromString(string) {\n let data = this._stringToData(string, false);\n return new Recur(data);\n }\n\n /**\n * Creates a new {@link ICAL.Recur} instance using members from the passed\n * data object.\n *\n * @param {Object} aData An object with members of the recurrence\n * @param {frequencyValues=} aData.freq The frequency value\n * @param {Number=} aData.interval The INTERVAL value\n * @param {weekDay=} aData.wkst The week start value\n * @param {Time=} aData.until The end of the recurrence set\n * @param {Number=} aData.count The number of occurrences\n * @param {Array.=} aData.bysecond The seconds for the BYSECOND part\n * @param {Array.=} aData.byminute The minutes for the BYMINUTE part\n * @param {Array.=} aData.byhour The hours for the BYHOUR part\n * @param {Array.=} aData.byday The BYDAY values\n * @param {Array.=} aData.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} aData.byyearday The days for the BYYEARDAY part\n * @param {Array.=} aData.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} aData.bymonth The month for the BYMONTH part\n * @param {Array.=} aData.bysetpos The positionals for the BYSETPOS part\n */\n static fromData(aData) {\n return new Recur(aData);\n }\n\n /**\n * Converts a recurrence string to a data object, suitable for the fromData\n * method.\n *\n * @private\n * @param {String} string The string to parse\n * @param {Boolean} fmtIcal If true, the string is considered to be an\n * iCalendar string\n * @return {Recur} The recurrence instance\n */\n static _stringToData(string, fmtIcal) {\n let dict = Object.create(null);\n\n // split is slower in FF but fast enough.\n // v8 however this is faster then manual split?\n let values = string.split(';');\n let len = values.length;\n\n for (let i = 0; i < len; i++) {\n let parts = values[i].split('=');\n let ucname = parts[0].toUpperCase();\n let lcname = parts[0].toLowerCase();\n let name = (fmtIcal ? lcname : ucname);\n let value = parts[1];\n\n if (ucname in partDesign) {\n let partArr = value.split(',');\n let partSet = new Set();\n\n for (let part of partArr) {\n partSet.add(partDesign[ucname](part));\n }\n partArr = [...partSet];\n\n dict[name] = (partArr.length == 1 ? partArr[0] : partArr);\n } else if (ucname in optionDesign) {\n optionDesign[ucname](value, dict, fmtIcal);\n } else {\n // Don't swallow unknown values. Just set them as they are.\n dict[lcname] = value;\n }\n }\n\n return dict;\n }\n\n /**\n * Convert an ical representation of a day (SU, MO, etc..)\n * into a numeric value of that day.\n *\n * @param {String} string The iCalendar day name\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Number} Numeric value of given day\n */\n static icalDayToNumericDay(string, aWeekStart) {\n //XXX: this is here so we can deal\n // with possibly invalid string values.\n let firstDow = aWeekStart || Time.SUNDAY;\n return ((DOW_MAP[string] - firstDow + 7) % 7) + 1;\n }\n\n /**\n * Convert a numeric day value into its ical representation (SU, MO, etc..)\n *\n * @param {Number} num Numeric value of given day\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {String} The ICAL day value, e.g SU,MO,...\n */\n static numericDayToIcalDay(num, aWeekStart) {\n //XXX: this is here so we can deal with possibly invalid number values.\n // Also, this allows consistent mapping between day numbers and day\n // names for external users.\n let firstDow = aWeekStart || Time.SUNDAY;\n let dow = (num + firstDow - Time.SUNDAY);\n if (dow > 7) {\n dow -= 7;\n }\n return REVERSE_DOW_MAP[dow];\n }\n\n /**\n * Create a new instance of the Recur class.\n *\n * @param {Object} data An object with members of the recurrence\n * @param {frequencyValues=} data.freq The frequency value\n * @param {Number=} data.interval The INTERVAL value\n * @param {weekDay=} data.wkst The week start value\n * @param {Time=} data.until The end of the recurrence set\n * @param {Number=} data.count The number of occurrences\n * @param {Array.=} data.bysecond The seconds for the BYSECOND part\n * @param {Array.=} data.byminute The minutes for the BYMINUTE part\n * @param {Array.=} data.byhour The hours for the BYHOUR part\n * @param {Array.=} data.byday The BYDAY values\n * @param {Array.=} data.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} data.byyearday The days for the BYYEARDAY part\n * @param {Array.=} data.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} data.bymonth The month for the BYMONTH part\n * @param {Array.=} data.bysetpos The positionals for the BYSETPOS part\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.parts = {};\n\n if (data && typeof(data) === 'object') {\n this.fromData(data);\n }\n }\n\n /**\n * An object holding the BY-parts of the recurrence rule\n * @memberof ICAL.Recur\n * @typedef {Object} byParts\n * @property {Array.=} BYSECOND The seconds for the BYSECOND part\n * @property {Array.=} BYMINUTE The minutes for the BYMINUTE part\n * @property {Array.=} BYHOUR The hours for the BYHOUR part\n * @property {Array.=} BYDAY The BYDAY values\n * @property {Array.=} BYMONTHDAY The days for the BYMONTHDAY part\n * @property {Array.=} BYYEARDAY The days for the BYYEARDAY part\n * @property {Array.=} BYWEEKNO The weeks for the BYWEEKNO part\n * @property {Array.=} BYMONTH The month for the BYMONTH part\n * @property {Array.=} BYSETPOS The positionals for the BYSETPOS part\n */\n\n /**\n * An object holding the BY-parts of the recurrence rule\n * @type {byParts}\n */\n parts = null;\n\n /**\n * The interval value for the recurrence rule.\n * @type {Number}\n */\n interval = 1;\n\n /**\n * The week start day\n *\n * @type {weekDay}\n * @default ICAL.Time.MONDAY\n */\n wkst = Time.MONDAY;\n\n /**\n * The end of the recurrence\n * @type {?Time}\n */\n until = null;\n\n /**\n * The maximum number of occurrences\n * @type {?Number}\n */\n count = null;\n\n /**\n * The frequency value.\n * @type {frequencyValues}\n */\n freq = null;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalrecur\"\n */\n icalclass = \"icalrecur\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"recur\"\n */\n icaltype = \"recur\";\n\n /**\n * Create a new iterator for this recurrence rule. The passed start date\n * must be the start date of the event, not the start of the range to\n * search in.\n *\n * @example\n * let recur = comp.getFirstPropertyValue('rrule');\n * let dtstart = comp.getFirstPropertyValue('dtstart');\n * let iter = recur.iterator(dtstart);\n * for (let next = iter.next(); next; next = iter.next()) {\n * if (next.compare(rangeStart) < 0) {\n * continue;\n * }\n * console.log(next.toString());\n * }\n *\n * @param {Time} aStart The item's start date\n * @return {RecurIterator} The recurrence iterator\n */\n iterator(aStart) {\n return new RecurIterator({\n rule: this,\n dtstart: aStart\n });\n }\n\n /**\n * Returns a clone of the recurrence object.\n *\n * @return {Recur} The cloned object\n */\n clone() {\n return new Recur(this.toJSON());\n }\n\n /**\n * Checks if the current rule is finite, i.e. has a count or until part.\n *\n * @return {Boolean} True, if the rule is finite\n */\n isFinite() {\n return !!(this.count || this.until);\n }\n\n /**\n * Checks if the current rule has a count part, and not limited by an until\n * part.\n *\n * @return {Boolean} True, if the rule is by count\n */\n isByCount() {\n return !!(this.count && !this.until);\n }\n\n /**\n * Adds a component (part) to the recurrence rule. This is not a component\n * in the sense of {@link ICAL.Component}, but a part of the recurrence\n * rule, i.e. BYMONTH.\n *\n * @param {String} aType The name of the component part\n * @param {Array|String} aValue The component value\n */\n addComponent(aType, aValue) {\n let ucname = aType.toUpperCase();\n if (ucname in this.parts) {\n this.parts[ucname].push(aValue);\n } else {\n this.parts[ucname] = [aValue];\n }\n }\n\n /**\n * Sets the component value for the given by-part.\n *\n * @param {String} aType The component part name\n * @param {Array} aValues The component values\n */\n setComponent(aType, aValues) {\n this.parts[aType.toUpperCase()] = aValues.slice();\n }\n\n /**\n * Gets (a copy) of the requested component value.\n *\n * @param {String} aType The component part name\n * @return {Array} The component part value\n */\n getComponent(aType) {\n let ucname = aType.toUpperCase();\n return (ucname in this.parts ? this.parts[ucname].slice() : []);\n }\n\n /**\n * Retrieves the next occurrence after the given recurrence id. See the\n * guide on {@tutorial terminology} for more details.\n *\n * NOTE: Currently, this method iterates all occurrences from the start\n * date. It should not be called in a loop for performance reasons. If you\n * would like to get more than one occurrence, you can iterate the\n * occurrences manually, see the example on the\n * {@link ICAL.Recur#iterator iterator} method.\n *\n * @param {Time} aStartTime The start of the event series\n * @param {Time} aRecurrenceId The date of the last occurrence\n * @return {Time} The next occurrence after\n */\n getNextOccurrence(aStartTime, aRecurrenceId) {\n let iter = this.iterator(aStartTime);\n let next;\n\n do {\n next = iter.next();\n } while (next && next.compare(aRecurrenceId) <= 0);\n\n if (next && aRecurrenceId.zone) {\n next.zone = aRecurrenceId.zone;\n }\n\n return next;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} data An object with members of the recurrence\n * @param {frequencyValues=} data.freq The frequency value\n * @param {Number=} data.interval The INTERVAL value\n * @param {weekDay=} data.wkst The week start value\n * @param {Time=} data.until The end of the recurrence set\n * @param {Number=} data.count The number of occurrences\n * @param {Array.=} data.bysecond The seconds for the BYSECOND part\n * @param {Array.=} data.byminute The minutes for the BYMINUTE part\n * @param {Array.=} data.byhour The hours for the BYHOUR part\n * @param {Array.=} data.byday The BYDAY values\n * @param {Array.=} data.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} data.byyearday The days for the BYYEARDAY part\n * @param {Array.=} data.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} data.bymonth The month for the BYMONTH part\n * @param {Array.=} data.bysetpos The positionals for the BYSETPOS part\n */\n fromData(data) {\n for (let key in data) {\n let uckey = key.toUpperCase();\n\n if (uckey in partDesign) {\n if (Array.isArray(data[key])) {\n this.parts[uckey] = data[key];\n } else {\n this.parts[uckey] = [data[key]];\n }\n } else {\n this[key] = data[key];\n }\n }\n\n if (this.interval && typeof this.interval != \"number\") {\n optionDesign.INTERVAL(this.interval, this);\n }\n\n if (this.wkst && typeof this.wkst != \"number\") {\n this.wkst = Recur.icalDayToNumericDay(this.wkst);\n }\n\n if (this.until && !(this.until instanceof Time)) {\n this.until = Time.fromString(this.until);\n }\n }\n\n /**\n * The jCal representation of this recurrence type.\n * @return {Object}\n */\n toJSON() {\n let res = Object.create(null);\n res.freq = this.freq;\n\n if (this.count) {\n res.count = this.count;\n }\n\n if (this.interval > 1) {\n res.interval = this.interval;\n }\n\n for (let [k, kparts] of Object.entries(this.parts)) {\n if (Array.isArray(kparts) && kparts.length == 1) {\n res[k.toLowerCase()] = kparts[0];\n } else {\n res[k.toLowerCase()] = clone(kparts);\n }\n }\n\n if (this.until) {\n res.until = this.until.toString();\n }\n if ('wkst' in this && this.wkst !== Time.DEFAULT_WEEK_START) {\n res.wkst = Recur.numericDayToIcalDay(this.wkst);\n }\n return res;\n }\n\n /**\n * The string representation of this recurrence rule.\n * @return {String}\n */\n toString() {\n // TODO retain order\n let str = \"FREQ=\" + this.freq;\n if (this.count) {\n str += \";COUNT=\" + this.count;\n }\n if (this.interval > 1) {\n str += \";INTERVAL=\" + this.interval;\n }\n for (let [k, v] of Object.entries(this.parts)) {\n str += \";\" + k + \"=\" + v;\n }\n if (this.until) {\n str += ';UNTIL=' + this.until.toICALString();\n }\n if ('wkst' in this && this.wkst !== Time.DEFAULT_WEEK_START) {\n str += ';WKST=' + Recur.numericDayToIcalDay(this.wkst);\n }\n return str;\n }\n}\n\nfunction parseNumericValue(type, min, max, value) {\n let result = value;\n\n if (value[0] === '+') {\n result = value.slice(1);\n }\n\n result = strictParseInt(result);\n\n if (min !== undefined && value < min) {\n throw new Error(\n type + ': invalid value \"' + value + '\" must be > ' + min\n );\n }\n\n if (max !== undefined && value > max) {\n throw new Error(\n type + ': invalid value \"' + value + '\" must be < ' + min\n );\n }\n\n return result;\n}\n\nconst optionDesign = {\n FREQ: function(value, dict, fmtIcal) {\n // yes this is actually equal or faster then regex.\n // upside here is we can enumerate the valid values.\n if (ALLOWED_FREQ.indexOf(value) !== -1) {\n dict.freq = value;\n } else {\n throw new Error(\n 'invalid frequency \"' + value + '\" expected: \"' +\n ALLOWED_FREQ.join(', ') + '\"'\n );\n }\n },\n\n COUNT: function(value, dict, fmtIcal) {\n dict.count = strictParseInt(value);\n },\n\n INTERVAL: function(value, dict, fmtIcal) {\n dict.interval = strictParseInt(value);\n if (dict.interval < 1) {\n // 0 or negative values are not allowed, some engines seem to generate\n // it though. Assume 1 instead.\n dict.interval = 1;\n }\n },\n\n UNTIL: function(value, dict, fmtIcal) {\n if (value.length > 10) {\n dict.until = design.icalendar.value['date-time'].fromICAL(value);\n } else {\n dict.until = design.icalendar.value.date.fromICAL(value);\n }\n if (!fmtIcal) {\n dict.until = Time.fromString(dict.until);\n }\n },\n\n WKST: function(value, dict, fmtIcal) {\n if (VALID_DAY_NAMES.test(value)) {\n dict.wkst = Recur.icalDayToNumericDay(value);\n } else {\n throw new Error('invalid WKST value \"' + value + '\"');\n }\n }\n};\n\nconst partDesign = {\n BYSECOND: parseNumericValue.bind(undefined, 'BYSECOND', 0, 60),\n BYMINUTE: parseNumericValue.bind(undefined, 'BYMINUTE', 0, 59),\n BYHOUR: parseNumericValue.bind(undefined, 'BYHOUR', 0, 23),\n BYDAY: function(value) {\n if (VALID_BYDAY_PART.test(value)) {\n return value;\n } else {\n throw new Error('invalid BYDAY value \"' + value + '\"');\n }\n },\n BYMONTHDAY: parseNumericValue.bind(undefined, 'BYMONTHDAY', -31, 31),\n BYYEARDAY: parseNumericValue.bind(undefined, 'BYYEARDAY', -366, 366),\n BYWEEKNO: parseNumericValue.bind(undefined, 'BYWEEKNO', -53, 53),\n BYMONTH: parseNumericValue.bind(undefined, 'BYMONTH', 1, 12),\n BYSETPOS: parseNumericValue.bind(undefined, 'BYSETPOS', -366, 366)\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\n/** @module ICAL.design */\n\nconst FROM_ICAL_NEWLINE = /\\\\\\\\|\\\\;|\\\\,|\\\\[Nn]/g;\nconst TO_ICAL_NEWLINE = /\\\\|;|,|\\n/g;\nconst FROM_VCARD_NEWLINE = /\\\\\\\\|\\\\,|\\\\[Nn]/g;\nconst TO_VCARD_NEWLINE = /\\\\|,|\\n/g;\n\nfunction createTextType(fromNewline, toNewline) {\n let result = {\n matches: /.*/,\n\n fromICAL: function(aValue, structuredEscape) {\n return replaceNewline(aValue, fromNewline, structuredEscape);\n },\n\n toICAL: function(aValue, structuredEscape) {\n let regEx = toNewline;\n if (structuredEscape)\n regEx = new RegExp(regEx.source + '|' + structuredEscape, regEx.flags);\n return aValue.replace(regEx, function(str) {\n switch (str) {\n case \"\\\\\":\n return \"\\\\\\\\\";\n case \";\":\n return \"\\\\;\";\n case \",\":\n return \"\\\\,\";\n case \"\\n\":\n return \"\\\\n\";\n /* c8 ignore next 2 */\n default:\n return str;\n }\n });\n }\n };\n return result;\n}\n\n// default types used multiple times\nconst DEFAULT_TYPE_TEXT = { defaultType: \"text\" };\nconst DEFAULT_TYPE_TEXT_MULTI = { defaultType: \"text\", multiValue: \",\" };\nconst DEFAULT_TYPE_TEXT_STRUCTURED = { defaultType: \"text\", structuredValue: \";\" };\nconst DEFAULT_TYPE_INTEGER = { defaultType: \"integer\" };\nconst DEFAULT_TYPE_DATETIME_DATE = { defaultType: \"date-time\", allowedTypes: [\"date-time\", \"date\"] };\nconst DEFAULT_TYPE_DATETIME = { defaultType: \"date-time\" };\nconst DEFAULT_TYPE_URI = { defaultType: \"uri\" };\nconst DEFAULT_TYPE_UTCOFFSET = { defaultType: \"utc-offset\" };\nconst DEFAULT_TYPE_RECUR = { defaultType: \"recur\" };\nconst DEFAULT_TYPE_DATE_ANDOR_TIME = { defaultType: \"date-and-or-time\", allowedTypes: [\"date-time\", \"date\", \"text\"] };\n\nfunction replaceNewlineReplace(string) {\n switch (string) {\n case \"\\\\\\\\\":\n return \"\\\\\";\n case \"\\\\;\":\n return \";\";\n case \"\\\\,\":\n return \",\";\n case \"\\\\n\":\n case \"\\\\N\":\n return \"\\n\";\n /* c8 ignore next 2 */\n default:\n return string;\n }\n}\n\nfunction replaceNewline(value, newline, structuredEscape) {\n // avoid regex when possible.\n if (value.indexOf('\\\\') === -1) {\n return value;\n }\n if (structuredEscape)\n newline = new RegExp(newline.source + '|\\\\\\\\' + structuredEscape, newline.flags);\n return value.replace(newline, replaceNewlineReplace);\n}\n\nlet commonProperties = {\n \"categories\": DEFAULT_TYPE_TEXT_MULTI,\n \"url\": DEFAULT_TYPE_URI,\n \"version\": DEFAULT_TYPE_TEXT,\n \"uid\": DEFAULT_TYPE_TEXT\n};\n\nlet commonValues = {\n \"boolean\": {\n values: [\"TRUE\", \"FALSE\"],\n\n fromICAL: function(aValue) {\n switch (aValue) {\n case 'TRUE':\n return true;\n case 'FALSE':\n return false;\n default:\n //TODO: parser warning\n return false;\n }\n },\n\n toICAL: function(aValue) {\n if (aValue) {\n return 'TRUE';\n }\n return 'FALSE';\n }\n\n },\n float: {\n matches: /^[+-]?\\d+\\.\\d+$/,\n\n fromICAL: function(aValue) {\n let parsed = parseFloat(aValue);\n if (isStrictlyNaN(parsed)) {\n // TODO: parser warning\n return 0.0;\n }\n return parsed;\n },\n\n toICAL: function(aValue) {\n return String(aValue);\n }\n },\n integer: {\n fromICAL: function(aValue) {\n let parsed = parseInt(aValue);\n if (isStrictlyNaN(parsed)) {\n return 0;\n }\n return parsed;\n },\n\n toICAL: function(aValue) {\n return String(aValue);\n }\n },\n \"utc-offset\": {\n toICAL: function(aValue) {\n if (aValue.length < 7) {\n // no seconds\n // -0500\n return aValue.slice(0, 3) +\n aValue.slice(4, 6);\n } else {\n // seconds\n // -050000\n return aValue.slice(0, 3) +\n aValue.slice(4, 6) +\n aValue.slice(7, 9);\n }\n },\n\n fromICAL: function(aValue) {\n if (aValue.length < 6) {\n // no seconds\n // -05:00\n return aValue.slice(0, 3) + ':' +\n aValue.slice(3, 5);\n } else {\n // seconds\n // -05:00:00\n return aValue.slice(0, 3) + ':' +\n aValue.slice(3, 5) + ':' +\n aValue.slice(5, 7);\n }\n },\n\n decorate: function(aValue) {\n return UtcOffset.fromString(aValue);\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n }\n};\n\nlet icalParams = {\n // Although the syntax is DQUOTE uri DQUOTE, I don't think we should\n // enforce anything aside from it being a valid content line.\n //\n // At least some params require - if multi values are used - DQUOTEs\n // for each of its values - e.g. delegated-from=\"uri1\",\"uri2\"\n // To indicate this, I introduced the new k/v pair\n // multiValueSeparateDQuote: true\n //\n // \"ALTREP\": { ... },\n\n // CN just wants a param-value\n // \"CN\": { ... }\n\n \"cutype\": {\n values: [\"INDIVIDUAL\", \"GROUP\", \"RESOURCE\", \"ROOM\", \"UNKNOWN\"],\n allowXName: true,\n allowIanaToken: true\n },\n\n \"delegated-from\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n \"delegated-to\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n // \"DIR\": { ... }, // See ALTREP\n \"encoding\": {\n values: [\"8BIT\", \"BASE64\"]\n },\n // \"FMTTYPE\": { ... }, // See ALTREP\n \"fbtype\": {\n values: [\"FREE\", \"BUSY\", \"BUSY-UNAVAILABLE\", \"BUSY-TENTATIVE\"],\n allowXName: true,\n allowIanaToken: true\n },\n // \"LANGUAGE\": { ... }, // See ALTREP\n \"member\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n \"partstat\": {\n // TODO These values are actually different per-component\n values: [\"NEEDS-ACTION\", \"ACCEPTED\", \"DECLINED\", \"TENTATIVE\",\n \"DELEGATED\", \"COMPLETED\", \"IN-PROCESS\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"range\": {\n values: [\"THISANDFUTURE\"]\n },\n \"related\": {\n values: [\"START\", \"END\"]\n },\n \"reltype\": {\n values: [\"PARENT\", \"CHILD\", \"SIBLING\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"role\": {\n values: [\"REQ-PARTICIPANT\", \"CHAIR\",\n \"OPT-PARTICIPANT\", \"NON-PARTICIPANT\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"rsvp\": {\n values: [\"TRUE\", \"FALSE\"]\n },\n \"sent-by\": {\n valueType: \"cal-address\"\n },\n \"tzid\": {\n matches: /^\\//\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"binary\", \"boolean\", \"cal-address\", \"date\", \"date-time\",\n \"duration\", \"float\", \"integer\", \"period\", \"recur\", \"text\",\n \"time\", \"uri\", \"utc-offset\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\n// When adding a value here, be sure to add it to the parameter types!\nconst icalValues = extend(commonValues, {\n text: createTextType(FROM_ICAL_NEWLINE, TO_ICAL_NEWLINE),\n\n uri: {\n // TODO\n /* ... */\n },\n\n \"binary\": {\n decorate: function(aString) {\n return Binary.fromString(aString);\n },\n\n undecorate: function(aBinary) {\n return aBinary.toString();\n }\n },\n \"cal-address\": {\n // needs to be an uri\n },\n \"date\": {\n decorate: function(aValue, aProp) {\n if (design.strict) {\n return Time.fromDateString(aValue, aProp);\n } else {\n return Time.fromString(aValue, aProp);\n }\n },\n\n /**\n * undecorates a time object.\n */\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n // from: 20120901\n // to: 2012-09-01\n if (!design.strict && aValue.length >= 15) {\n // This is probably a date-time, e.g. 20120901T130000Z\n return icalValues[\"date-time\"].fromICAL(aValue);\n } else {\n return aValue.slice(0, 4) + '-' +\n aValue.slice(4, 6) + '-' +\n aValue.slice(6, 8);\n }\n },\n\n toICAL: function(aValue) {\n // from: 2012-09-01\n // to: 20120901\n let len = aValue.length;\n\n if (len == 10) {\n return aValue.slice(0, 4) +\n aValue.slice(5, 7) +\n aValue.slice(8, 10);\n } else if (len >= 19) {\n return icalValues[\"date-time\"].toICAL(aValue);\n } else {\n //TODO: serialize warning?\n return aValue;\n }\n\n }\n },\n \"date-time\": {\n fromICAL: function(aValue) {\n // from: 20120901T130000\n // to: 2012-09-01T13:00:00\n if (!design.strict && aValue.length == 8) {\n // This is probably a date, e.g. 20120901\n return icalValues.date.fromICAL(aValue);\n } else {\n let result = aValue.slice(0, 4) + '-' +\n aValue.slice(4, 6) + '-' +\n aValue.slice(6, 8) + 'T' +\n aValue.slice(9, 11) + ':' +\n aValue.slice(11, 13) + ':' +\n aValue.slice(13, 15);\n\n if (aValue[15] && aValue[15] === 'Z') {\n result += 'Z';\n }\n\n return result;\n }\n },\n\n toICAL: function(aValue) {\n // from: 2012-09-01T13:00:00\n // to: 20120901T130000\n let len = aValue.length;\n\n if (len == 10 && !design.strict) {\n return icalValues.date.toICAL(aValue);\n } else if (len >= 19) {\n let result = aValue.slice(0, 4) +\n aValue.slice(5, 7) +\n // grab the (DDTHH) segment\n aValue.slice(8, 13) +\n // MM\n aValue.slice(14, 16) +\n // SS\n aValue.slice(17, 19);\n\n if (aValue[19] && aValue[19] === 'Z') {\n result += 'Z';\n }\n return result;\n } else {\n // TODO: error\n return aValue;\n }\n },\n\n decorate: function(aValue, aProp) {\n if (design.strict) {\n return Time.fromDateTimeString(aValue, aProp);\n } else {\n return Time.fromString(aValue, aProp);\n }\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n },\n duration: {\n decorate: function(aValue) {\n return Duration.fromString(aValue);\n },\n undecorate: function(aValue) {\n return aValue.toString();\n }\n },\n period: {\n fromICAL: function(string) {\n let parts = string.split('/');\n parts[0] = icalValues['date-time'].fromICAL(parts[0]);\n\n if (!Duration.isValueString(parts[1])) {\n parts[1] = icalValues['date-time'].fromICAL(parts[1]);\n }\n\n return parts;\n },\n\n toICAL: function(parts) {\n parts = parts.slice();\n if (!design.strict && parts[0].length == 10) {\n parts[0] = icalValues.date.toICAL(parts[0]);\n } else {\n parts[0] = icalValues['date-time'].toICAL(parts[0]);\n }\n\n if (!Duration.isValueString(parts[1])) {\n if (!design.strict && parts[1].length == 10) {\n parts[1] = icalValues.date.toICAL(parts[1]);\n } else {\n parts[1] = icalValues['date-time'].toICAL(parts[1]);\n }\n }\n\n return parts.join(\"/\");\n },\n\n decorate: function(aValue, aProp) {\n return Period.fromJSON(aValue, aProp, !design.strict);\n },\n\n undecorate: function(aValue) {\n return aValue.toJSON();\n }\n },\n recur: {\n fromICAL: function(string) {\n return Recur._stringToData(string, true);\n },\n\n toICAL: function(data) {\n let str = \"\";\n for (let [k, val] of Object.entries(data)) {\n if (k == \"until\") {\n if (val.length > 10) {\n val = icalValues['date-time'].toICAL(val);\n } else {\n val = icalValues.date.toICAL(val);\n }\n } else if (k == \"wkst\") {\n if (typeof val === 'number') {\n val = Recur.numericDayToIcalDay(val);\n }\n } else if (Array.isArray(val)) {\n val = val.join(\",\");\n }\n str += k.toUpperCase() + \"=\" + val + \";\";\n }\n return str.slice(0, Math.max(0, str.length - 1));\n },\n\n decorate: function decorate(aValue) {\n return Recur.fromData(aValue);\n },\n\n undecorate: function(aRecur) {\n return aRecur.toJSON();\n }\n },\n\n time: {\n fromICAL: function(aValue) {\n // from: MMHHSS(Z)?\n // to: HH:MM:SS(Z)?\n if (aValue.length < 6) {\n // TODO: parser exception?\n return aValue;\n }\n\n // HH::MM::SSZ?\n let result = aValue.slice(0, 2) + ':' +\n aValue.slice(2, 4) + ':' +\n aValue.slice(4, 6);\n\n if (aValue[6] === 'Z') {\n result += 'Z';\n }\n\n return result;\n },\n\n toICAL: function(aValue) {\n // from: HH:MM:SS(Z)?\n // to: MMHHSS(Z)?\n if (aValue.length < 8) {\n //TODO: error\n return aValue;\n }\n\n let result = aValue.slice(0, 2) +\n aValue.slice(3, 5) +\n aValue.slice(6, 8);\n\n if (aValue[8] === 'Z') {\n result += 'Z';\n }\n\n return result;\n }\n }\n});\n\nlet icalProperties = extend(commonProperties, {\n\n \"action\": DEFAULT_TYPE_TEXT,\n \"attach\": { defaultType: \"uri\" },\n \"attendee\": { defaultType: \"cal-address\" },\n \"calscale\": DEFAULT_TYPE_TEXT,\n \"class\": DEFAULT_TYPE_TEXT,\n \"comment\": DEFAULT_TYPE_TEXT,\n \"completed\": DEFAULT_TYPE_DATETIME,\n \"contact\": DEFAULT_TYPE_TEXT,\n \"created\": DEFAULT_TYPE_DATETIME,\n \"description\": DEFAULT_TYPE_TEXT,\n \"dtend\": DEFAULT_TYPE_DATETIME_DATE,\n \"dtstamp\": DEFAULT_TYPE_DATETIME,\n \"dtstart\": DEFAULT_TYPE_DATETIME_DATE,\n \"due\": DEFAULT_TYPE_DATETIME_DATE,\n \"duration\": { defaultType: \"duration\" },\n \"exdate\": {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n multiValue: ','\n },\n \"exrule\": DEFAULT_TYPE_RECUR,\n \"freebusy\": { defaultType: \"period\", multiValue: \",\" },\n \"geo\": { defaultType: \"float\", structuredValue: \";\" },\n \"last-modified\": DEFAULT_TYPE_DATETIME,\n \"location\": DEFAULT_TYPE_TEXT,\n \"method\": DEFAULT_TYPE_TEXT,\n \"organizer\": { defaultType: \"cal-address\" },\n \"percent-complete\": DEFAULT_TYPE_INTEGER,\n \"priority\": DEFAULT_TYPE_INTEGER,\n \"prodid\": DEFAULT_TYPE_TEXT,\n \"related-to\": DEFAULT_TYPE_TEXT,\n \"repeat\": DEFAULT_TYPE_INTEGER,\n \"rdate\": {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\", \"period\"],\n multiValue: ',',\n detectType: function(string) {\n if (string.indexOf('/') !== -1) {\n return 'period';\n }\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n \"recurrence-id\": DEFAULT_TYPE_DATETIME_DATE,\n \"resources\": DEFAULT_TYPE_TEXT_MULTI,\n \"request-status\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"rrule\": DEFAULT_TYPE_RECUR,\n \"sequence\": DEFAULT_TYPE_INTEGER,\n \"status\": DEFAULT_TYPE_TEXT,\n \"summary\": DEFAULT_TYPE_TEXT,\n \"transp\": DEFAULT_TYPE_TEXT,\n \"trigger\": { defaultType: \"duration\", allowedTypes: [\"duration\", \"date-time\"] },\n \"tzoffsetfrom\": DEFAULT_TYPE_UTCOFFSET,\n \"tzoffsetto\": DEFAULT_TYPE_UTCOFFSET,\n \"tzurl\": DEFAULT_TYPE_URI,\n \"tzid\": DEFAULT_TYPE_TEXT,\n \"tzname\": DEFAULT_TYPE_TEXT\n});\n\n// When adding a value here, be sure to add it to the parameter types!\nconst vcardValues = extend(commonValues, {\n text: createTextType(FROM_VCARD_NEWLINE, TO_VCARD_NEWLINE),\n uri: createTextType(FROM_VCARD_NEWLINE, TO_VCARD_NEWLINE),\n\n date: {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date\");\n },\n undecorate: function(aValue) {\n return aValue.toString();\n },\n fromICAL: function(aValue) {\n if (aValue.length == 8) {\n return icalValues.date.fromICAL(aValue);\n } else if (aValue[0] == '-' && aValue.length == 6) {\n return aValue.slice(0, 4) + '-' + aValue.slice(4);\n } else {\n return aValue;\n }\n },\n toICAL: function(aValue) {\n if (aValue.length == 10) {\n return icalValues.date.toICAL(aValue);\n } else if (aValue[0] == '-' && aValue.length == 7) {\n return aValue.slice(0, 4) + aValue.slice(5);\n } else {\n return aValue;\n }\n }\n },\n\n time: {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(\"T\" + aValue, \"time\");\n },\n undecorate: function(aValue) {\n return aValue.toString();\n },\n fromICAL: function(aValue) {\n let splitzone = vcardValues.time._splitZone(aValue, true);\n let zone = splitzone[0], value = splitzone[1];\n\n //console.log(\"SPLIT: \",splitzone);\n\n if (value.length == 6) {\n value = value.slice(0, 2) + ':' +\n value.slice(2, 4) + ':' +\n value.slice(4, 6);\n } else if (value.length == 4 && value[0] != '-') {\n value = value.slice(0, 2) + ':' + value.slice(2, 4);\n } else if (value.length == 5) {\n value = value.slice(0, 3) + ':' + value.slice(3, 5);\n }\n\n if (zone.length == 5 && (zone[0] == '-' || zone[0] == '+')) {\n zone = zone.slice(0, 3) + ':' + zone.slice(3);\n }\n\n return value + zone;\n },\n\n toICAL: function(aValue) {\n let splitzone = vcardValues.time._splitZone(aValue);\n let zone = splitzone[0], value = splitzone[1];\n\n if (value.length == 8) {\n value = value.slice(0, 2) +\n value.slice(3, 5) +\n value.slice(6, 8);\n } else if (value.length == 5 && value[0] != '-') {\n value = value.slice(0, 2) + value.slice(3, 5);\n } else if (value.length == 6) {\n value = value.slice(0, 3) + value.slice(4, 6);\n }\n\n if (zone.length == 6 && (zone[0] == '-' || zone[0] == '+')) {\n zone = zone.slice(0, 3) + zone.slice(4);\n }\n\n return value + zone;\n },\n\n _splitZone: function(aValue, isFromIcal) {\n let lastChar = aValue.length - 1;\n let signChar = aValue.length - (isFromIcal ? 5 : 6);\n let sign = aValue[signChar];\n let zone, value;\n\n if (aValue[lastChar] == 'Z') {\n zone = aValue[lastChar];\n value = aValue.slice(0, Math.max(0, lastChar));\n } else if (aValue.length > 6 && (sign == '-' || sign == '+')) {\n zone = aValue.slice(signChar);\n value = aValue.slice(0, Math.max(0, signChar));\n } else {\n zone = \"\";\n value = aValue;\n }\n\n return [zone, value];\n }\n },\n\n \"date-time\": {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date-time\");\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n return vcardValues['date-and-or-time'].fromICAL(aValue);\n },\n\n toICAL: function(aValue) {\n return vcardValues['date-and-or-time'].toICAL(aValue);\n }\n },\n\n \"date-and-or-time\": {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date-and-or-time\");\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n let parts = aValue.split('T');\n return (parts[0] ? vcardValues.date.fromICAL(parts[0]) : '') +\n (parts[1] ? 'T' + vcardValues.time.fromICAL(parts[1]) : '');\n },\n\n toICAL: function(aValue) {\n let parts = aValue.split('T');\n return vcardValues.date.toICAL(parts[0]) +\n (parts[1] ? 'T' + vcardValues.time.toICAL(parts[1]) : '');\n\n }\n },\n timestamp: icalValues['date-time'],\n \"language-tag\": {\n matches: /^[a-zA-Z0-9-]+$/ // Could go with a more strict regex here\n },\n \"phone-number\": {\n fromICAL: function(aValue) {\n return Array.from(aValue).filter(function(c) {\n return c === '\\\\' ? undefined : c;\n }).join('');\n },\n toICAL: function(aValue) {\n return Array.from(aValue).map(function(c) {\n return c === ',' || c === \";\" ? '\\\\' + c : c;\n }).join('');\n }\n }\n});\n\nlet vcardParams = {\n \"type\": {\n valueType: \"text\",\n multiValue: \",\"\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"text\", \"uri\", \"date\", \"time\", \"date-time\", \"date-and-or-time\",\n \"timestamp\", \"boolean\", \"integer\", \"float\", \"utc-offset\",\n \"language-tag\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\nlet vcardProperties = extend(commonProperties, {\n \"adr\": { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n \"anniversary\": DEFAULT_TYPE_DATE_ANDOR_TIME,\n \"bday\": DEFAULT_TYPE_DATE_ANDOR_TIME,\n \"caladruri\": DEFAULT_TYPE_URI,\n \"caluri\": DEFAULT_TYPE_URI,\n \"clientpidmap\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"email\": DEFAULT_TYPE_TEXT,\n \"fburl\": DEFAULT_TYPE_URI,\n \"fn\": DEFAULT_TYPE_TEXT,\n \"gender\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"geo\": DEFAULT_TYPE_URI,\n \"impp\": DEFAULT_TYPE_URI,\n \"key\": DEFAULT_TYPE_URI,\n \"kind\": DEFAULT_TYPE_TEXT,\n \"lang\": { defaultType: \"language-tag\" },\n \"logo\": DEFAULT_TYPE_URI,\n \"member\": DEFAULT_TYPE_URI,\n \"n\": { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n \"nickname\": DEFAULT_TYPE_TEXT_MULTI,\n \"note\": DEFAULT_TYPE_TEXT,\n \"org\": { defaultType: \"text\", structuredValue: \";\" },\n \"photo\": DEFAULT_TYPE_URI,\n \"related\": DEFAULT_TYPE_URI,\n \"rev\": { defaultType: \"timestamp\" },\n \"role\": DEFAULT_TYPE_TEXT,\n \"sound\": DEFAULT_TYPE_URI,\n \"source\": DEFAULT_TYPE_URI,\n \"tel\": { defaultType: \"uri\", allowedTypes: [\"uri\", \"text\"] },\n \"title\": DEFAULT_TYPE_TEXT,\n \"tz\": { defaultType: \"text\", allowedTypes: [\"text\", \"utc-offset\", \"uri\"] },\n \"xml\": DEFAULT_TYPE_TEXT\n});\n\nlet vcard3Values = extend(commonValues, {\n binary: icalValues.binary,\n date: vcardValues.date,\n \"date-time\": vcardValues[\"date-time\"],\n \"phone-number\": vcardValues[\"phone-number\"],\n uri: icalValues.uri,\n text: vcardValues.text,\n time: icalValues.time,\n vcard: icalValues.text,\n \"utc-offset\": {\n toICAL: function(aValue) {\n return aValue.slice(0, 7);\n },\n\n fromICAL: function(aValue) {\n return aValue.slice(0, 7);\n },\n\n decorate: function(aValue) {\n return UtcOffset.fromString(aValue);\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n }\n});\n\nlet vcard3Params = {\n \"type\": {\n valueType: \"text\",\n multiValue: \",\"\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"text\", \"uri\", \"date\", \"date-time\", \"phone-number\", \"time\",\n \"boolean\", \"integer\", \"float\", \"utc-offset\", \"vcard\", \"binary\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\nlet vcard3Properties = extend(commonProperties, {\n fn: DEFAULT_TYPE_TEXT,\n n: { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n nickname: DEFAULT_TYPE_TEXT_MULTI,\n photo: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n bday: {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n detectType: function(string) {\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n\n adr: { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n label: DEFAULT_TYPE_TEXT,\n\n tel: { defaultType: \"phone-number\" },\n email: DEFAULT_TYPE_TEXT,\n mailer: DEFAULT_TYPE_TEXT,\n\n tz: { defaultType: \"utc-offset\", allowedTypes: [\"utc-offset\", \"text\"] },\n geo: { defaultType: \"float\", structuredValue: \";\" },\n\n title: DEFAULT_TYPE_TEXT,\n role: DEFAULT_TYPE_TEXT,\n logo: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n agent: { defaultType: \"vcard\", allowedTypes: [\"vcard\", \"text\", \"uri\"] },\n org: DEFAULT_TYPE_TEXT_STRUCTURED,\n\n note: DEFAULT_TYPE_TEXT_MULTI,\n prodid: DEFAULT_TYPE_TEXT,\n rev: {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n detectType: function(string) {\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n \"sort-string\": DEFAULT_TYPE_TEXT,\n sound: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n\n class: DEFAULT_TYPE_TEXT,\n key: { defaultType: \"binary\", allowedTypes: [\"binary\", \"text\"] }\n});\n\n/**\n * iCalendar design set\n * @type {designSet}\n */\nlet icalSet = {\n name: \"ical\",\n value: icalValues,\n param: icalParams,\n property: icalProperties,\n propertyGroups: false\n};\n\n/**\n * vCard 4.0 design set\n * @type {designSet}\n */\nlet vcardSet = {\n name: \"vcard4\",\n value: vcardValues,\n param: vcardParams,\n property: vcardProperties,\n propertyGroups: true\n};\n\n/**\n * vCard 3.0 design set\n * @type {designSet}\n */\nlet vcard3Set = {\n name: \"vcard3\",\n value: vcard3Values,\n param: vcard3Params,\n property: vcard3Properties,\n propertyGroups: true\n};\n\n/**\n * The design data, used by the parser to determine types for properties and\n * other metadata needed to produce correct jCard/jCal data.\n *\n * @alias ICAL.design\n * @exports module:ICAL.design\n */\nconst design = {\n /**\n * Can be set to false to make the parser more lenient.\n */\n strict: true,\n\n /**\n * The default set for new properties and components if none is specified.\n * @type {designSet}\n */\n defaultSet: icalSet,\n\n /**\n * The default type for unknown properties\n * @type {String}\n */\n defaultType: 'unknown',\n\n /**\n * Holds the design set for known top-level components\n *\n * @type {Object}\n * @property {designSet} vcard vCard VCARD\n * @property {designSet} vevent iCalendar VEVENT\n * @property {designSet} vtodo iCalendar VTODO\n * @property {designSet} vjournal iCalendar VJOURNAL\n * @property {designSet} valarm iCalendar VALARM\n * @property {designSet} vtimezone iCalendar VTIMEZONE\n * @property {designSet} daylight iCalendar DAYLIGHT\n * @property {designSet} standard iCalendar STANDARD\n *\n * @example\n * let propertyName = 'fn';\n * let componentDesign = ICAL.design.components.vcard;\n * let propertyDetails = componentDesign.property[propertyName];\n * if (propertyDetails.defaultType == 'text') {\n * // Yep, sure is...\n * }\n */\n components: {\n vcard: vcardSet,\n vcard3: vcard3Set,\n vevent: icalSet,\n vtodo: icalSet,\n vjournal: icalSet,\n valarm: icalSet,\n vtimezone: icalSet,\n daylight: icalSet,\n standard: icalSet\n },\n\n\n /**\n * The design set for iCalendar (rfc5545/rfc7265) components.\n * @type {designSet}\n */\n icalendar: icalSet,\n\n /**\n * The design set for vCard (rfc6350/rfc7095) components.\n * @type {designSet}\n */\n vcard: vcardSet,\n\n /**\n * The design set for vCard (rfc2425/rfc2426/rfc7095) components.\n * @type {designSet}\n */\n vcard3: vcard3Set,\n\n /**\n * Gets the design set for the given component name.\n *\n * @param {String} componentName The name of the component\n * @return {designSet} The design set for the component\n */\n getDesignSet: function(componentName) {\n let isInDesign = componentName && componentName in design.components;\n return isInDesign ? design.components[componentName] : design.defaultSet;\n }\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\nconst LINE_ENDING = '\\r\\n';\nconst DEFAULT_VALUE_TYPE = 'unknown';\nconst RFC6868_REPLACE_MAP = { '\"': \"^'\", \"\\n\": \"^n\", \"^\": \"^^\" };\n\n/**\n * Convert a full jCal/jCard array into a iCalendar/vCard string.\n *\n * @function ICAL.stringify\n * @variation function\n * @param {Array} jCal The jCal/jCard document\n * @return {String} The stringified iCalendar/vCard document\n */\nfunction stringify(jCal) {\n if (typeof jCal[0] == \"string\") {\n // This is a single component\n jCal = [jCal];\n }\n\n let i = 0;\n let len = jCal.length;\n let result = '';\n\n for (; i < len; i++) {\n result += stringify.component(jCal[i]) + LINE_ENDING;\n }\n\n return result;\n}\n\n/**\n * Converts an jCal component array into a ICAL string.\n * Recursive will resolve sub-components.\n *\n * Exact component/property order is not saved all\n * properties will come before subcomponents.\n *\n * @function ICAL.stringify.component\n * @param {Array} component\n * jCal/jCard fragment of a component\n * @param {designSet} designSet\n * The design data to use for this component\n * @return {String} The iCalendar/vCard string\n */\nstringify.component = function(component, designSet) {\n let name = component[0].toUpperCase();\n let result = 'BEGIN:' + name + LINE_ENDING;\n\n let props = component[1];\n let propIdx = 0;\n let propLen = props.length;\n\n let designSetName = component[0];\n // rfc6350 requires that in vCard 4.0 the first component is the VERSION\n // component with as value 4.0, note that 3.0 does not have this requirement.\n if (designSetName === 'vcard' && component[1].length > 0 &&\n !(component[1][0][0] === \"version\" && component[1][0][3] === \"4.0\")) {\n designSetName = \"vcard3\";\n }\n designSet = designSet || design.getDesignSet(designSetName);\n\n for (; propIdx < propLen; propIdx++) {\n result += stringify.property(props[propIdx], designSet) + LINE_ENDING;\n }\n\n // Ignore subcomponents if none exist, e.g. in vCard.\n let comps = component[2] || [];\n let compIdx = 0;\n let compLen = comps.length;\n\n for (; compIdx < compLen; compIdx++) {\n result += stringify.component(comps[compIdx], designSet) + LINE_ENDING;\n }\n\n result += 'END:' + name;\n return result;\n};\n\n/**\n * Converts a single jCal/jCard property to a iCalendar/vCard string.\n *\n * @function ICAL.stringify.property\n * @param {Array} property\n * jCal/jCard property array\n * @param {designSet} designSet\n * The design data to use for this property\n * @param {Boolean} noFold\n * If true, the line is not folded\n * @return {String} The iCalendar/vCard string\n */\nstringify.property = function(property, designSet, noFold) {\n let name = property[0].toUpperCase();\n let jsName = property[0];\n let params = property[1];\n\n if (!designSet) {\n designSet = design.defaultSet;\n }\n\n let groupName = params.group;\n let line;\n if (designSet.propertyGroups && groupName) {\n line = groupName.toUpperCase() + \".\" + name;\n } else {\n line = name;\n }\n\n for (let [paramName, value] of Object.entries(params)) {\n if (designSet.propertyGroups && paramName == 'group') {\n continue;\n }\n\n let paramDesign = designSet.param[paramName];\n let multiValue = paramDesign && paramDesign.multiValue;\n if (multiValue && Array.isArray(value)) {\n value = value.map(function(val) {\n val = stringify._rfc6868Unescape(val);\n val = stringify.paramPropertyValue(val, paramDesign.multiValueSeparateDQuote);\n return val;\n });\n value = stringify.multiValue(value, multiValue, \"unknown\", null, designSet);\n } else {\n value = stringify._rfc6868Unescape(value);\n value = stringify.paramPropertyValue(value);\n }\n\n line += ';' + paramName.toUpperCase() + '=' + value;\n }\n\n if (property.length === 3) {\n // If there are no values, we must assume a blank value\n return line + ':';\n }\n\n let valueType = property[2];\n\n let propDetails;\n let multiValue = false;\n let structuredValue = false;\n let isDefault = false;\n\n if (jsName in designSet.property) {\n propDetails = designSet.property[jsName];\n\n if ('multiValue' in propDetails) {\n multiValue = propDetails.multiValue;\n }\n\n if (('structuredValue' in propDetails) && Array.isArray(property[3])) {\n structuredValue = propDetails.structuredValue;\n }\n\n if ('defaultType' in propDetails) {\n if (valueType === propDetails.defaultType) {\n isDefault = true;\n }\n } else {\n if (valueType === DEFAULT_VALUE_TYPE) {\n isDefault = true;\n }\n }\n } else {\n if (valueType === DEFAULT_VALUE_TYPE) {\n isDefault = true;\n }\n }\n\n // push the VALUE property if type is not the default\n // for the current property.\n if (!isDefault) {\n // value will never contain ;/:/, so we don't escape it here.\n line += ';VALUE=' + valueType.toUpperCase();\n }\n\n line += ':';\n\n if (multiValue && structuredValue) {\n line += stringify.multiValue(\n property[3], structuredValue, valueType, multiValue, designSet, structuredValue\n );\n } else if (multiValue) {\n line += stringify.multiValue(\n property.slice(3), multiValue, valueType, null, designSet, false\n );\n } else if (structuredValue) {\n line += stringify.multiValue(\n property[3], structuredValue, valueType, null, designSet, structuredValue\n );\n } else {\n line += stringify.value(property[3], valueType, designSet, false);\n }\n\n return noFold ? line : foldline(line);\n};\n\n/**\n * Handles escaping of property values that may contain:\n *\n * COLON (:), SEMICOLON (;), or COMMA (,)\n *\n * If any of the above are present the result is wrapped\n * in double quotes.\n *\n * @function ICAL.stringify.paramPropertyValue\n * @param {String} value Raw property value\n * @param {boolean} force If value should be escaped even when unnecessary\n * @return {String} Given or escaped value when needed\n */\nstringify.paramPropertyValue = function(value, force) {\n if (!force &&\n (value.indexOf(',') === -1) &&\n (value.indexOf(':') === -1) &&\n (value.indexOf(';') === -1)) {\n\n return value;\n }\n\n return '\"' + value + '\"';\n};\n\n/**\n * Converts an array of ical values into a single\n * string based on a type and a delimiter value (like \",\").\n *\n * @function ICAL.stringify.multiValue\n * @param {Array} values List of values to convert\n * @param {String} delim Used to join the values (\",\", \";\", \":\")\n * @param {String} type Lowecase ical value type\n * (like boolean, date-time, etc..)\n * @param {?String} innerMulti If set, each value will again be processed\n * Used for structured values\n * @param {designSet} designSet\n * The design data to use for this property\n *\n * @return {String} iCalendar/vCard string for value\n */\nstringify.multiValue = function(values, delim, type, innerMulti, designSet, structuredValue) {\n let result = '';\n let len = values.length;\n let i = 0;\n\n for (; i < len; i++) {\n if (innerMulti && Array.isArray(values[i])) {\n result += stringify.multiValue(values[i], innerMulti, type, null, designSet, structuredValue);\n } else {\n result += stringify.value(values[i], type, designSet, structuredValue);\n }\n\n if (i !== (len - 1)) {\n result += delim;\n }\n }\n\n return result;\n};\n\n/**\n * Processes a single ical value runs the associated \"toICAL\" method from the\n * design value type if available to convert the value.\n *\n * @function ICAL.stringify.value\n * @param {String|Number} value A formatted value\n * @param {String} type Lowercase iCalendar/vCard value type\n * (like boolean, date-time, etc..)\n * @return {String} iCalendar/vCard value for single value\n */\nstringify.value = function(value, type, designSet, structuredValue) {\n if (type in designSet.value && 'toICAL' in designSet.value[type]) {\n return designSet.value[type].toICAL(value, structuredValue);\n }\n return value;\n};\n\n/**\n * Internal helper for rfc6868. Exposing this on ICAL.stringify so that\n * hackers can disable the rfc6868 parsing if the really need to.\n *\n * @param {String} val The value to unescape\n * @return {String} The escaped value\n */\nstringify._rfc6868Unescape = function(val) {\n return val.replace(/[\\n^\"]/g, function(x) {\n return RFC6868_REPLACE_MAP[x];\n });\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\nconst NAME_INDEX$1 = 0;\nconst PROP_INDEX = 1;\nconst TYPE_INDEX = 2;\nconst VALUE_INDEX = 3;\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").Geo} Geo\n * Imports the 'Geo' type from the \"types.js\" module\n */\n\n/**\n * Provides a layer on top of the raw jCal object for manipulating a single property, with its\n * parameters and value.\n *\n * @memberof ICAL\n */\nclass Property {\n /**\n * Create an {@link ICAL.Property} by parsing the passed iCalendar string.\n *\n * @param {String} str The iCalendar string to parse\n * @param {designSet=} designSet The design data to use for this property\n * @return {Property} The created iCalendar property\n */\n static fromString(str, designSet) {\n return new Property(parse.property(str, designSet));\n }\n\n /**\n * Creates a new ICAL.Property instance.\n *\n * It is important to note that mutations done in the wrapper directly mutate the jCal object used\n * to initialize.\n *\n * Can also be used to create new properties by passing the name of the property (as a String).\n *\n * @param {Array|String} jCal Raw jCal representation OR the new name of the property\n * @param {Component=} parent Parent component\n */\n constructor(jCal, parent) {\n this._parent = parent || null;\n\n if (typeof(jCal) === 'string') {\n // We are creating the property by name and need to detect the type\n this.jCal = [jCal, {}, design.defaultType];\n this.jCal[TYPE_INDEX] = this.getDefaultType();\n } else {\n this.jCal = jCal;\n }\n this._updateType();\n }\n\n /**\n * The value type for this property\n * @type {String}\n */\n get type() {\n return this.jCal[TYPE_INDEX];\n }\n\n /**\n * The name of this property, in lowercase.\n * @type {String}\n */\n get name() {\n return this.jCal[NAME_INDEX$1];\n }\n\n /**\n * The parent component for this property.\n * @type {Component}\n */\n get parent() {\n return this._parent;\n }\n\n set parent(p) {\n // Before setting the parent, check if the design set has changed. If it\n // has, we later need to update the type if it was unknown before.\n let designSetChanged = !this._parent || (p && p._designSet != this._parent._designSet);\n\n this._parent = p;\n\n if (this.type == design.defaultType && designSetChanged) {\n this.jCal[TYPE_INDEX] = this.getDefaultType();\n this._updateType();\n }\n }\n\n /**\n * The design set for this property, e.g. icalendar vs vcard\n *\n * @type {designSet}\n * @private\n */\n get _designSet() {\n return this.parent ? this.parent._designSet : design.defaultSet;\n }\n\n /**\n * Updates the type metadata from the current jCal type and design set.\n *\n * @private\n */\n _updateType() {\n let designSet = this._designSet;\n\n if (this.type in designSet.value) {\n if ('decorate' in designSet.value[this.type]) {\n this.isDecorated = true;\n } else {\n this.isDecorated = false;\n }\n\n if (this.name in designSet.property) {\n this.isMultiValue = ('multiValue' in designSet.property[this.name]);\n this.isStructuredValue = ('structuredValue' in designSet.property[this.name]);\n }\n }\n }\n\n /**\n * Hydrate a single value. The act of hydrating means turning the raw jCal\n * value into a potentially wrapped object, for example {@link ICAL.Time}.\n *\n * @private\n * @param {Number} index The index of the value to hydrate\n * @return {?Object} The decorated value.\n */\n _hydrateValue(index) {\n if (this._values && this._values[index]) {\n return this._values[index];\n }\n\n // for the case where there is no value.\n if (this.jCal.length <= (VALUE_INDEX + index)) {\n return null;\n }\n\n if (this.isDecorated) {\n if (!this._values) {\n this._values = [];\n }\n return (this._values[index] = this._decorate(\n this.jCal[VALUE_INDEX + index]\n ));\n } else {\n return this.jCal[VALUE_INDEX + index];\n }\n }\n\n /**\n * Decorate a single value, returning its wrapped object. This is used by\n * the hydrate function to actually wrap the value.\n *\n * @private\n * @param {?} value The value to decorate\n * @return {Object} The decorated value\n */\n _decorate(value) {\n return this._designSet.value[this.type].decorate(value, this);\n }\n\n /**\n * Undecorate a single value, returning its raw jCal data.\n *\n * @private\n * @param {Object} value The value to undecorate\n * @return {?} The undecorated value\n */\n _undecorate(value) {\n return this._designSet.value[this.type].undecorate(value, this);\n }\n\n /**\n * Sets the value at the given index while also hydrating it. The passed\n * value can either be a decorated or undecorated value.\n *\n * @private\n * @param {?} value The value to set\n * @param {Number} index The index to set it at\n */\n _setDecoratedValue(value, index) {\n if (!this._values) {\n this._values = [];\n }\n\n if (typeof(value) === 'object' && 'icaltype' in value) {\n // decorated value\n this.jCal[VALUE_INDEX + index] = this._undecorate(value);\n this._values[index] = value;\n } else {\n // undecorated value\n this.jCal[VALUE_INDEX + index] = value;\n this._values[index] = this._decorate(value);\n }\n }\n\n /**\n * Gets a parameter on the property.\n *\n * @param {String} name Parameter name (lowercase)\n * @return {Array|String} Parameter value\n */\n getParameter(name) {\n if (name in this.jCal[PROP_INDEX]) {\n return this.jCal[PROP_INDEX][name];\n } else {\n return undefined;\n }\n }\n\n /**\n * Gets first parameter on the property.\n *\n * @param {String} name Parameter name (lowercase)\n * @return {String} Parameter value\n */\n getFirstParameter(name) {\n let parameters = this.getParameter(name);\n\n if (Array.isArray(parameters)) {\n return parameters[0];\n }\n\n return parameters;\n }\n\n /**\n * Sets a parameter on the property.\n *\n * @param {String} name The parameter name\n * @param {Array|String} value The parameter value\n */\n setParameter(name, value) {\n let lcname = name.toLowerCase();\n if (typeof value === \"string\" &&\n lcname in this._designSet.param &&\n 'multiValue' in this._designSet.param[lcname]) {\n value = [value];\n }\n this.jCal[PROP_INDEX][name] = value;\n }\n\n /**\n * Removes a parameter\n *\n * @param {String} name The parameter name\n */\n removeParameter(name) {\n delete this.jCal[PROP_INDEX][name];\n }\n\n /**\n * Get the default type based on this property's name.\n *\n * @return {String} The default type for this property\n */\n getDefaultType() {\n let name = this.jCal[NAME_INDEX$1];\n let designSet = this._designSet;\n\n if (name in designSet.property) {\n let details = designSet.property[name];\n if ('defaultType' in details) {\n return details.defaultType;\n }\n }\n return design.defaultType;\n }\n\n /**\n * Sets type of property and clears out any existing values of the current\n * type.\n *\n * @param {String} type New iCAL type (see design.*.values)\n */\n resetType(type) {\n this.removeAllValues();\n this.jCal[TYPE_INDEX] = type;\n this._updateType();\n }\n\n /**\n * Finds the first property value.\n *\n * @return {Binary | Duration | Period |\n * Recur | Time | UtcOffset | Geo | string | null} First property value\n */\n getFirstValue() {\n return this._hydrateValue(0);\n }\n\n /**\n * Gets all values on the property.\n *\n * NOTE: this creates an array during each call.\n *\n * @return {Array} List of values\n */\n getValues() {\n let len = this.jCal.length - VALUE_INDEX;\n\n if (len < 1) {\n // it is possible for a property to have no value.\n return [];\n }\n\n let i = 0;\n let result = [];\n\n for (; i < len; i++) {\n result[i] = this._hydrateValue(i);\n }\n\n return result;\n }\n\n /**\n * Removes all values from this property\n */\n removeAllValues() {\n if (this._values) {\n this._values.length = 0;\n }\n this.jCal.length = 3;\n }\n\n /**\n * Sets the values of the property. Will overwrite the existing values.\n * This can only be used for multi-value properties.\n *\n * @param {Array} values An array of values\n */\n setValues(values) {\n if (!this.isMultiValue) {\n throw new Error(\n this.name + ': does not not support mulitValue.\\n' +\n 'override isMultiValue'\n );\n }\n\n let len = values.length;\n let i = 0;\n this.removeAllValues();\n\n if (len > 0 &&\n typeof(values[0]) === 'object' &&\n 'icaltype' in values[0]) {\n this.resetType(values[0].icaltype);\n }\n\n if (this.isDecorated) {\n for (; i < len; i++) {\n this._setDecoratedValue(values[i], i);\n }\n } else {\n for (; i < len; i++) {\n this.jCal[VALUE_INDEX + i] = values[i];\n }\n }\n }\n\n /**\n * Sets the current value of the property. If this is a multi-value\n * property, all other values will be removed.\n *\n * @param {String|Object} value New property value.\n */\n setValue(value) {\n this.removeAllValues();\n if (typeof(value) === 'object' && 'icaltype' in value) {\n this.resetType(value.icaltype);\n }\n\n if (this.isDecorated) {\n this._setDecoratedValue(value, 0);\n } else {\n this.jCal[VALUE_INDEX] = value;\n }\n }\n\n /**\n * Returns the Object representation of this component. The returned object\n * is a live jCal object and should be cloned if modified.\n * @return {Object}\n */\n toJSON() {\n return this.jCal;\n }\n\n /**\n * The string representation of this component.\n * @return {String}\n */\n toICALString() {\n return stringify.property(\n this.jCal, this._designSet, true\n );\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").Geo} Geo\n * Imports the 'Geo' type from the \"types.js\" module\n */\n\nconst NAME_INDEX = 0;\nconst PROPERTY_INDEX = 1;\nconst COMPONENT_INDEX = 2;\n\nconst PROPERTY_NAME_INDEX = 0;\nconst PROPERTY_VALUE_INDEX = 3;\n\n/**\n * Wraps a jCal component, adding convenience methods to add, remove and update subcomponents and\n * properties.\n *\n * @memberof ICAL\n */\nclass Component {\n /**\n * Create an {@link ICAL.Component} by parsing the passed iCalendar string.\n *\n * @param {String} str The iCalendar string to parse\n */\n static fromString(str) {\n return new Component(parse.component(str));\n }\n\n /**\n * Creates a new Component instance.\n *\n * @param {Array|String} jCal Raw jCal component data OR name of new\n * component\n * @param {Component=} parent Parent component to associate\n */\n constructor(jCal, parent) {\n if (typeof(jCal) === 'string') {\n // jCal spec (name, properties, components)\n jCal = [jCal, [], []];\n }\n\n // mostly for legacy reasons.\n this.jCal = jCal;\n\n this.parent = parent || null;\n\n if (!this.parent && this.name === 'vcalendar') {\n this._timezoneCache = new Map();\n }\n }\n\n /**\n * Hydrated properties are inserted into the _properties array at the same\n * position as in the jCal array, so it is possible that the array contains\n * undefined values for unhydrdated properties. To avoid iterating the\n * array when checking if all properties have been hydrated, we save the\n * count here.\n *\n * @type {Number}\n * @private\n */\n _hydratedPropertyCount = 0;\n\n /**\n * The same count as for _hydratedPropertyCount, but for subcomponents\n *\n * @type {Number}\n * @private\n */\n _hydratedComponentCount = 0;\n\n /**\n * A cache of hydrated time zone objects which may be used by consumers, keyed\n * by time zone ID.\n *\n * @type {Map}\n * @private\n */\n _timezoneCache = null;\n\n /**\n * @private\n */\n _components = null;\n\n /**\n * @private\n */\n _properties = null;\n\n /**\n * The name of this component\n *\n * @type {String}\n */\n get name() {\n return this.jCal[NAME_INDEX];\n }\n\n /**\n * The design set for this component, e.g. icalendar vs vcard\n *\n * @type {designSet}\n * @private\n */\n get _designSet() {\n let parentDesign = this.parent && this.parent._designSet;\n if (!parentDesign && this.name == \"vcard\") {\n // We can't decide on vcard3 vs vcard4 just based on the component name, the version number is\n // in the version property. We also can't use hydrated properties here because it would lead\n // to recursion, but the spec says that the version property needs to be the very first one.\n let versionProp = this.jCal[PROPERTY_INDEX]?.[0];\n\n if (versionProp && versionProp[PROPERTY_NAME_INDEX] == \"version\" && versionProp[PROPERTY_VALUE_INDEX] == \"3.0\") {\n return design.getDesignSet(\"vcard3\");\n }\n }\n\n return parentDesign || design.getDesignSet(this.name);\n }\n\n /**\n * @private\n */\n _hydrateComponent(index) {\n if (!this._components) {\n this._components = [];\n this._hydratedComponentCount = 0;\n }\n\n if (this._components[index]) {\n return this._components[index];\n }\n\n let comp = new Component(\n this.jCal[COMPONENT_INDEX][index],\n this\n );\n\n this._hydratedComponentCount++;\n return (this._components[index] = comp);\n }\n\n /**\n * @private\n */\n _hydrateProperty(index) {\n if (!this._properties) {\n this._properties = [];\n this._hydratedPropertyCount = 0;\n }\n\n if (this._properties[index]) {\n return this._properties[index];\n }\n\n let prop = new Property(\n this.jCal[PROPERTY_INDEX][index],\n this\n );\n\n this._hydratedPropertyCount++;\n return (this._properties[index] = prop);\n }\n\n /**\n * Finds first sub component, optionally filtered by name.\n *\n * @param {String=} name Optional name to filter by\n * @return {?Component} The found subcomponent\n */\n getFirstSubcomponent(name) {\n if (name) {\n let i = 0;\n let comps = this.jCal[COMPONENT_INDEX];\n let len = comps.length;\n\n for (; i < len; i++) {\n if (comps[i][NAME_INDEX] === name) {\n let result = this._hydrateComponent(i);\n return result;\n }\n }\n } else {\n if (this.jCal[COMPONENT_INDEX].length) {\n return this._hydrateComponent(0);\n }\n }\n\n // ensure we return a value (strict mode)\n return null;\n }\n\n /**\n * Finds all sub components, optionally filtering by name.\n *\n * @param {String=} name Optional name to filter by\n * @return {Component[]} The found sub components\n */\n getAllSubcomponents(name) {\n let jCalLen = this.jCal[COMPONENT_INDEX].length;\n let i = 0;\n\n if (name) {\n let comps = this.jCal[COMPONENT_INDEX];\n let result = [];\n\n for (; i < jCalLen; i++) {\n if (name === comps[i][NAME_INDEX]) {\n result.push(\n this._hydrateComponent(i)\n );\n }\n }\n return result;\n } else {\n if (!this._components ||\n (this._hydratedComponentCount !== jCalLen)) {\n for (; i < jCalLen; i++) {\n this._hydrateComponent(i);\n }\n }\n\n return this._components || [];\n }\n }\n\n /**\n * Returns true when a named property exists.\n *\n * @param {String} name The property name\n * @return {Boolean} True, when property is found\n */\n hasProperty(name) {\n let props = this.jCal[PROPERTY_INDEX];\n let len = props.length;\n\n let i = 0;\n for (; i < len; i++) {\n // 0 is property name\n if (props[i][NAME_INDEX] === name) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Finds the first property, optionally with the given name.\n *\n * @param {String=} name Lowercase property name\n * @return {?Property} The found property\n */\n getFirstProperty(name) {\n if (name) {\n let i = 0;\n let props = this.jCal[PROPERTY_INDEX];\n let len = props.length;\n\n for (; i < len; i++) {\n if (props[i][NAME_INDEX] === name) {\n let result = this._hydrateProperty(i);\n return result;\n }\n }\n } else {\n if (this.jCal[PROPERTY_INDEX].length) {\n return this._hydrateProperty(0);\n }\n }\n\n return null;\n }\n\n /**\n * Returns first property's value, if available.\n *\n * @param {String=} name Lowercase property name\n * @return {Binary | Duration | Period |\n * Recur | Time | UtcOffset | Geo | string | null} The found property value.\n */\n getFirstPropertyValue(name) {\n let prop = this.getFirstProperty(name);\n if (prop) {\n return prop.getFirstValue();\n }\n\n return null;\n }\n\n /**\n * Get all properties in the component, optionally filtered by name.\n *\n * @param {String=} name Lowercase property name\n * @return {Property[]} List of properties\n */\n getAllProperties(name) {\n let jCalLen = this.jCal[PROPERTY_INDEX].length;\n let i = 0;\n\n if (name) {\n let props = this.jCal[PROPERTY_INDEX];\n let result = [];\n\n for (; i < jCalLen; i++) {\n if (name === props[i][NAME_INDEX]) {\n result.push(\n this._hydrateProperty(i)\n );\n }\n }\n return result;\n } else {\n if (!this._properties ||\n (this._hydratedPropertyCount !== jCalLen)) {\n for (; i < jCalLen; i++) {\n this._hydrateProperty(i);\n }\n }\n\n return this._properties || [];\n }\n }\n\n /**\n * @private\n */\n _removeObjectByIndex(jCalIndex, cache, index) {\n cache = cache || [];\n // remove cached version\n if (cache[index]) {\n let obj = cache[index];\n if (\"parent\" in obj) {\n obj.parent = null;\n }\n }\n\n cache.splice(index, 1);\n\n // remove it from the jCal\n this.jCal[jCalIndex].splice(index, 1);\n }\n\n /**\n * @private\n */\n _removeObject(jCalIndex, cache, nameOrObject) {\n let i = 0;\n let objects = this.jCal[jCalIndex];\n let len = objects.length;\n let cached = this[cache];\n\n if (typeof(nameOrObject) === 'string') {\n for (; i < len; i++) {\n if (objects[i][NAME_INDEX] === nameOrObject) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n return true;\n }\n }\n } else if (cached) {\n for (; i < len; i++) {\n if (cached[i] && cached[i] === nameOrObject) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * @private\n */\n _removeAllObjects(jCalIndex, cache, name) {\n let cached = this[cache];\n\n // Unfortunately we have to run through all children to reset their\n // parent property.\n let objects = this.jCal[jCalIndex];\n let i = objects.length - 1;\n\n // descending search required because splice\n // is used and will effect the indices.\n for (; i >= 0; i--) {\n if (!name || objects[i][NAME_INDEX] === name) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n }\n }\n }\n\n /**\n * Adds a single sub component.\n *\n * @param {Component} component The component to add\n * @return {Component} The passed in component\n */\n addSubcomponent(component) {\n if (!this._components) {\n this._components = [];\n this._hydratedComponentCount = 0;\n }\n\n if (component.parent) {\n component.parent.removeSubcomponent(component);\n }\n\n let idx = this.jCal[COMPONENT_INDEX].push(component.jCal);\n this._components[idx - 1] = component;\n this._hydratedComponentCount++;\n component.parent = this;\n return component;\n }\n\n /**\n * Removes a single component by name or the instance of a specific\n * component.\n *\n * @param {Component|String} nameOrComp Name of component, or component\n * @return {Boolean} True when comp is removed\n */\n removeSubcomponent(nameOrComp) {\n let removed = this._removeObject(COMPONENT_INDEX, '_components', nameOrComp);\n if (removed) {\n this._hydratedComponentCount--;\n }\n return removed;\n }\n\n /**\n * Removes all components or (if given) all components by a particular\n * name.\n *\n * @param {String=} name Lowercase component name\n */\n removeAllSubcomponents(name) {\n let removed = this._removeAllObjects(COMPONENT_INDEX, '_components', name);\n this._hydratedComponentCount = 0;\n return removed;\n }\n\n /**\n * Adds an {@link ICAL.Property} to the component.\n *\n * @param {Property} property The property to add\n * @return {Property} The passed in property\n */\n addProperty(property) {\n if (!(property instanceof Property)) {\n throw new TypeError('must be instance of ICAL.Property');\n }\n\n if (!this._properties) {\n this._properties = [];\n this._hydratedPropertyCount = 0;\n }\n\n if (property.parent) {\n property.parent.removeProperty(property);\n }\n\n let idx = this.jCal[PROPERTY_INDEX].push(property.jCal);\n this._properties[idx - 1] = property;\n this._hydratedPropertyCount++;\n property.parent = this;\n return property;\n }\n\n /**\n * Helper method to add a property with a value to the component.\n *\n * @param {String} name Property name to add\n * @param {String|Number|Object} value Property value\n * @return {Property} The created property\n */\n addPropertyWithValue(name, value) {\n let prop = new Property(name);\n prop.setValue(value);\n\n this.addProperty(prop);\n\n return prop;\n }\n\n /**\n * Helper method that will update or create a property of the given name\n * and sets its value. If multiple properties with the given name exist,\n * only the first is updated.\n *\n * @param {String} name Property name to update\n * @param {String|Number|Object} value Property value\n * @return {Property} The created property\n */\n updatePropertyWithValue(name, value) {\n let prop = this.getFirstProperty(name);\n\n if (prop) {\n prop.setValue(value);\n } else {\n prop = this.addPropertyWithValue(name, value);\n }\n\n return prop;\n }\n\n /**\n * Removes a single property by name or the instance of the specific\n * property.\n *\n * @param {String|Property} nameOrProp Property name or instance to remove\n * @return {Boolean} True, when deleted\n */\n removeProperty(nameOrProp) {\n let removed = this._removeObject(PROPERTY_INDEX, '_properties', nameOrProp);\n if (removed) {\n this._hydratedPropertyCount--;\n }\n return removed;\n }\n\n /**\n * Removes all properties associated with this component, optionally\n * filtered by name.\n *\n * @param {String=} name Lowercase property name\n * @return {Boolean} True, when deleted\n */\n removeAllProperties(name) {\n let removed = this._removeAllObjects(PROPERTY_INDEX, '_properties', name);\n this._hydratedPropertyCount = 0;\n return removed;\n }\n\n /**\n * Returns the Object representation of this component. The returned object\n * is a live jCal object and should be cloned if modified.\n * @return {Object}\n */\n toJSON() {\n return this.jCal;\n }\n\n /**\n * The string representation of this component.\n * @return {String}\n */\n toString() {\n return stringify.component(\n this.jCal, this._designSet\n );\n }\n\n /**\n * Retrieve a time zone definition from the component tree, if any is present.\n * If the tree contains no time zone definitions or the TZID cannot be\n * matched, returns null.\n *\n * @param {String} tzid The ID of the time zone to retrieve\n * @return {Timezone} The time zone corresponding to the ID, or null\n */\n getTimeZoneByID(tzid) {\n // VTIMEZONE components can only appear as a child of the VCALENDAR\n // component; walk the tree if we're not the root.\n if (this.parent) {\n return this.parent.getTimeZoneByID(tzid);\n }\n\n // If there is no time zone cache, we are probably parsing an incomplete\n // file and will have no time zone definitions.\n if (!this._timezoneCache) {\n return null;\n }\n\n if (this._timezoneCache.has(tzid)) {\n return this._timezoneCache.get(tzid);\n }\n\n // If the time zone is not already cached, hydrate it from the\n // subcomponents.\n const zones = this.getAllSubcomponents('vtimezone');\n for (const zone of zones) {\n if (zone.getFirstProperty('tzid').getFirstValue() === tzid) {\n const hydratedZone = new Timezone({\n component: zone,\n tzid: tzid,\n });\n\n this._timezoneCache.set(tzid, hydratedZone);\n\n return hydratedZone;\n }\n }\n\n // Per the standard, we should always have a time zone defined in a file\n // for any referenced TZID, but don't blow up if the file is invalid.\n return null;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Primary class for expanding recurring rules. Can take multiple rrules, rdates, exdate(s) and\n * iterate (in order) over each next occurrence.\n *\n * Once initialized this class can also be serialized saved and continue iteration from the last\n * point.\n *\n * NOTE: it is intended that this class is to be used with {@link ICAL.Event} which handles recurrence\n * exceptions.\n *\n * @example\n * // assuming event is a parsed ical component\n * var event;\n *\n * var expand = new ICAL.RecurExpansion({\n * component: event,\n * dtstart: event.getFirstPropertyValue('dtstart')\n * });\n *\n * // remember there are infinite rules so it is a good idea to limit the scope of the iterations\n * // then resume later on.\n *\n * // next is always an ICAL.Time or null\n * var next;\n *\n * while (someCondition && (next = expand.next())) {\n * // do something with next\n * }\n *\n * // save instance for later\n * var json = JSON.stringify(expand);\n *\n * //...\n *\n * // NOTE: if the component's properties have changed you will need to rebuild the class and start\n * // over. This only works when the component's recurrence info is the same.\n * var expand = new ICAL.RecurExpansion(JSON.parse(json));\n *\n * @memberof ICAL\n */\nclass RecurExpansion {\n /**\n * Creates a new ICAL.RecurExpansion instance.\n *\n * The options object can be filled with the specified initial values. It can also contain\n * additional members, as a result of serializing a previous expansion state, as shown in the\n * example.\n *\n * @param {Object} options\n * Recurrence expansion options\n * @param {Time} options.dtstart\n * Start time of the event\n * @param {Component=} options.component\n * Component for expansion, required if not resuming.\n */\n constructor(options) {\n this.ruleDates = [];\n this.exDates = [];\n this.fromData(options);\n }\n\n /**\n * True when iteration is fully completed.\n * @type {Boolean}\n */\n complete = false;\n\n /**\n * Array of rrule iterators.\n *\n * @type {RecurIterator[]}\n * @private\n */\n ruleIterators = null;\n\n /**\n * Array of rdate instances.\n *\n * @type {Time[]}\n * @private\n */\n ruleDates = null;\n\n /**\n * Array of exdate instances.\n *\n * @type {Time[]}\n * @private\n */\n exDates = null;\n\n /**\n * Current position in ruleDates array.\n * @type {Number}\n * @private\n */\n ruleDateInc = 0;\n\n /**\n * Current position in exDates array\n * @type {Number}\n * @private\n */\n exDateInc = 0;\n\n /**\n * Current negative date.\n *\n * @type {Time}\n * @private\n */\n exDate = null;\n\n /**\n * Current additional date.\n *\n * @type {Time}\n * @private\n */\n ruleDate = null;\n\n /**\n * Start date of recurring rules.\n *\n * @type {Time}\n */\n dtstart = null;\n\n /**\n * Last expanded time\n *\n * @type {Time}\n */\n last = null;\n\n /**\n * Initialize the recurrence expansion from the data object. The options\n * object may also contain additional members, see the\n * {@link ICAL.RecurExpansion constructor} for more details.\n *\n * @param {Object} options\n * Recurrence expansion options\n * @param {Time} options.dtstart\n * Start time of the event\n * @param {Component=} options.component\n * Component for expansion, required if not resuming.\n */\n fromData(options) {\n let start = formatClassType(options.dtstart, Time);\n\n if (!start) {\n throw new Error('.dtstart (ICAL.Time) must be given');\n } else {\n this.dtstart = start;\n }\n\n if (options.component) {\n this._init(options.component);\n } else {\n this.last = formatClassType(options.last, Time) || start.clone();\n\n if (!options.ruleIterators) {\n throw new Error('.ruleIterators or .component must be given');\n }\n\n this.ruleIterators = options.ruleIterators.map(function(item) {\n return formatClassType(item, RecurIterator);\n });\n\n this.ruleDateInc = options.ruleDateInc;\n this.exDateInc = options.exDateInc;\n\n if (options.ruleDates) {\n this.ruleDates = options.ruleDates.map(item => formatClassType(item, Time));\n this.ruleDate = this.ruleDates[this.ruleDateInc];\n }\n\n if (options.exDates) {\n this.exDates = options.exDates.map(item => formatClassType(item, Time));\n this.exDate = this.exDates[this.exDateInc];\n }\n\n if (typeof(options.complete) !== 'undefined') {\n this.complete = options.complete;\n }\n }\n }\n\n /**\n * Compare two ICAL.Time objects. When the second parameter is a DATE and the first parameter is\n * DATE-TIME, strip the time and compare only the days.\n *\n * @private\n * @param {Time} a The one object to compare\n * @param {Time} b The other object to compare\n */\n _compare_special(a, b) {\n if (!a.isDate && b.isDate)\n return new Time({ year: a.year, month: a.month, day: a.day }).compare(b);\n return a.compare(b);\n }\n\n /**\n * Retrieve the next occurrence in the series.\n * @return {Time}\n */\n next() {\n let iter;\n let next;\n let compare;\n\n let maxTries = 500;\n let currentTry = 0;\n\n while (true) {\n if (currentTry++ > maxTries) {\n throw new Error(\n 'max tries have occurred, rule may be impossible to fulfill.'\n );\n }\n\n next = this.ruleDate;\n iter = this._nextRecurrenceIter(this.last);\n\n // no more matches\n // because we increment the rule day or rule\n // _after_ we choose a value this should be\n // the only spot where we need to worry about the\n // end of events.\n if (!next && !iter) {\n // there are no more iterators or rdates\n this.complete = true;\n break;\n }\n\n // no next rule day or recurrence rule is first.\n if (!next || (iter && next.compare(iter.last) > 0)) {\n // must be cloned, recur will reuse the time element.\n next = iter.last.clone();\n // move to next so we can continue\n iter.next();\n }\n\n // if the ruleDate is still next increment it.\n if (this.ruleDate === next) {\n this._nextRuleDay();\n }\n\n this.last = next;\n\n // check the negative rules\n if (this.exDate) {\n // EXDATE can be in DATE format, but DTSTART is in DATE-TIME format\n compare = this._compare_special(this.last, this.exDate);\n\n if (compare > 0) {\n this._nextExDay();\n }\n\n // if the current rule is excluded skip it.\n if (compare === 0) {\n this._nextExDay();\n continue;\n }\n }\n\n //XXX: The spec states that after we resolve the final\n // list of dates we execute exdate this seems somewhat counter\n // intuitive to what I have seen most servers do so for now\n // I exclude based on the original date not the one that may\n // have been modified by the exception.\n return this.last;\n }\n }\n\n /**\n * Converts object into a serialize-able format. This format can be passed\n * back into the expansion to resume iteration.\n * @return {Object}\n */\n toJSON() {\n function toJSON(item) {\n return item.toJSON();\n }\n\n let result = Object.create(null);\n result.ruleIterators = this.ruleIterators.map(toJSON);\n\n if (this.ruleDates) {\n result.ruleDates = this.ruleDates.map(toJSON);\n }\n\n if (this.exDates) {\n result.exDates = this.exDates.map(toJSON);\n }\n\n result.ruleDateInc = this.ruleDateInc;\n result.exDateInc = this.exDateInc;\n result.last = this.last.toJSON();\n result.dtstart = this.dtstart.toJSON();\n result.complete = this.complete;\n\n return result;\n }\n\n /**\n * Extract all dates from the properties in the given component. The\n * properties will be filtered by the property name.\n *\n * @private\n * @param {Component} component The component to search in\n * @param {String} propertyName The property name to search for\n * @return {Time[]} The extracted dates.\n */\n _extractDates(component, propertyName) {\n let result = [];\n let props = component.getAllProperties(propertyName);\n\n for (let i = 0, len = props.length; i < len; i++) {\n for (let prop of props[i].getValues()) {\n let idx = binsearchInsert(\n result,\n prop,\n (a, b) => a.compare(b)\n );\n\n // ordered insert\n result.splice(idx, 0, prop);\n }\n }\n\n return result;\n }\n\n /**\n * Initialize the recurrence expansion.\n *\n * @private\n * @param {Component} component The component to initialize from.\n */\n _init(component) {\n this.ruleIterators = [];\n\n this.last = this.dtstart.clone();\n\n // to provide api consistency non-recurring\n // events can also use the iterator though it will\n // only return a single time.\n if (!component.hasProperty('rdate') &&\n !component.hasProperty('rrule') &&\n !component.hasProperty('recurrence-id')) {\n this.ruleDate = this.last.clone();\n this.complete = true;\n return;\n }\n\n if (component.hasProperty('rdate')) {\n this.ruleDates = this._extractDates(component, 'rdate');\n\n // special hack for cases where first rdate is prior\n // to the start date. We only check for the first rdate.\n // This is mostly for google's crazy recurring date logic\n // (contacts birthdays).\n if ((this.ruleDates[0]) &&\n (this.ruleDates[0].compare(this.dtstart) < 0)) {\n\n this.ruleDateInc = 0;\n this.last = this.ruleDates[0].clone();\n } else {\n this.ruleDateInc = binsearchInsert(\n this.ruleDates,\n this.last,\n (a, b) => a.compare(b)\n );\n }\n\n this.ruleDate = this.ruleDates[this.ruleDateInc];\n }\n\n if (component.hasProperty('rrule')) {\n let rules = component.getAllProperties('rrule');\n let i = 0;\n let len = rules.length;\n\n let rule;\n let iter;\n\n for (; i < len; i++) {\n rule = rules[i].getFirstValue();\n iter = rule.iterator(this.dtstart);\n this.ruleIterators.push(iter);\n\n // increment to the next occurrence so future\n // calls to next return times beyond the initial iteration.\n // XXX: I find this suspicious might be a bug?\n iter.next();\n }\n }\n\n if (component.hasProperty('exdate')) {\n this.exDates = this._extractDates(component, 'exdate');\n // if we have a .last day we increment the index to beyond it.\n // When DTSTART is in DATE-TIME format, EXDATE is in DATE format and EXDATE is\n // the date of DTSTART, _compare_special finds this out and compareTime fails.\n this.exDateInc = binsearchInsert(\n this.exDates,\n this.last,\n this._compare_special\n );\n\n this.exDate = this.exDates[this.exDateInc];\n }\n }\n\n /**\n * Advance to the next exdate\n * @private\n */\n _nextExDay() {\n this.exDate = this.exDates[++this.exDateInc];\n }\n\n /**\n * Advance to the next rule date\n * @private\n */\n _nextRuleDay() {\n this.ruleDate = this.ruleDates[++this.ruleDateInc];\n }\n\n /**\n * Find and return the recurrence rule with the most recent event and\n * return it.\n *\n * @private\n * @return {?RecurIterator} Found iterator.\n */\n _nextRecurrenceIter() {\n let iters = this.ruleIterators;\n\n if (iters.length === 0) {\n return null;\n }\n\n let len = iters.length;\n let iter;\n let iterTime;\n let iterIdx = 0;\n let chosenIter;\n\n // loop through each iterator\n for (; iterIdx < len; iterIdx++) {\n iter = iters[iterIdx];\n iterTime = iter.last;\n\n // if iteration is complete\n // then we must exclude it from\n // the search and remove it.\n if (iter.completed) {\n len--;\n if (iterIdx !== 0) {\n iterIdx--;\n }\n iters.splice(iterIdx, 1);\n continue;\n }\n\n // find the most recent possible choice\n if (!chosenIter || chosenIter.last.compare(iterTime) > 0) {\n // that iterator is saved\n chosenIter = iter;\n }\n }\n\n // the chosen iterator is returned but not mutated\n // this iterator contains the most recent event.\n return chosenIter;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").frequencyValues} frequencyValues\n * Imports the 'frequencyValues' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").occurrenceDetails} occurrenceDetails\n * Imports the 'occurrenceDetails' type from the \"types.js\" module\n */\n\n/**\n * ICAL.js is organized into multiple layers. The bottom layer is a raw jCal\n * object, followed by the component/property layer. The highest level is the\n * event representation, which this class is part of. See the\n * {@tutorial layers} guide for more details.\n *\n * @memberof ICAL\n */\nclass Event {\n /**\n * Creates a new ICAL.Event instance.\n *\n * @param {Component=} component The ICAL.Component to base this event on\n * @param {Object} [options] Options for this event\n * @param {Boolean=} options.strictExceptions When true, will verify exceptions are related by\n * their UUID\n * @param {Array=} options.exceptions\n * Exceptions to this event, either as components or events. If not\n * specified exceptions will automatically be set in relation of\n * component's parent\n */\n constructor(component, options) {\n if (!(component instanceof Component)) {\n options = component;\n component = null;\n }\n\n if (component) {\n this.component = component;\n } else {\n this.component = new Component('vevent');\n }\n\n this._rangeExceptionCache = Object.create(null);\n this.exceptions = Object.create(null);\n this.rangeExceptions = [];\n\n if (options && options.strictExceptions) {\n this.strictExceptions = options.strictExceptions;\n }\n\n if (options && options.exceptions) {\n options.exceptions.forEach(this.relateException, this);\n } else if (this.component.parent && !this.isRecurrenceException()) {\n this.component.parent.getAllSubcomponents('vevent').forEach(function(event) {\n if (event.hasProperty('recurrence-id')) {\n this.relateException(event);\n }\n }, this);\n }\n }\n\n\n static THISANDFUTURE = 'THISANDFUTURE';\n\n /**\n * List of related event exceptions.\n *\n * @type {Event[]}\n */\n exceptions = null;\n\n /**\n * When true, will verify exceptions are related by their UUID.\n *\n * @type {Boolean}\n */\n strictExceptions = false;\n\n /**\n * Relates a given event exception to this object. If the given component\n * does not share the UID of this event it cannot be related and will throw\n * an exception.\n *\n * If this component is an exception it cannot have other exceptions\n * related to it.\n *\n * @param {Component|Event} obj Component or event\n */\n relateException(obj) {\n if (this.isRecurrenceException()) {\n throw new Error('cannot relate exception to exceptions');\n }\n\n if (obj instanceof Component) {\n obj = new Event(obj);\n }\n\n if (this.strictExceptions && obj.uid !== this.uid) {\n throw new Error('attempted to relate unrelated exception');\n }\n\n let id = obj.recurrenceId.toString();\n\n // we don't sort or manage exceptions directly\n // here the recurrence expander handles that.\n this.exceptions[id] = obj;\n\n // index RANGE=THISANDFUTURE exceptions so we can\n // look them up later in getOccurrenceDetails.\n if (obj.modifiesFuture()) {\n let item = [\n obj.recurrenceId.toUnixTime(), id\n ];\n\n // we keep them sorted so we can find the nearest\n // value later on...\n let idx = binsearchInsert(\n this.rangeExceptions,\n item,\n compareRangeException\n );\n\n this.rangeExceptions.splice(idx, 0, item);\n }\n }\n\n /**\n * Checks if this record is an exception and has the RANGE=THISANDFUTURE\n * value.\n *\n * @return {Boolean} True, when exception is within range\n */\n modifiesFuture() {\n if (!this.component.hasProperty('recurrence-id')) {\n return false;\n }\n\n let range = this.component.getFirstProperty('recurrence-id').getParameter('range');\n return range === Event.THISANDFUTURE;\n }\n\n /**\n * Finds the range exception nearest to the given date.\n *\n * @param {Time} time usually an occurrence time of an event\n * @return {?Event} the related event/exception or null\n */\n findRangeException(time) {\n if (!this.rangeExceptions.length) {\n return null;\n }\n\n let utc = time.toUnixTime();\n let idx = binsearchInsert(\n this.rangeExceptions,\n [utc],\n compareRangeException\n );\n\n idx -= 1;\n\n // occurs before\n if (idx < 0) {\n return null;\n }\n\n let rangeItem = this.rangeExceptions[idx];\n\n /* c8 ignore next 4 */\n if (utc < rangeItem[0]) {\n // sanity check only\n return null;\n }\n\n return rangeItem[1];\n }\n\n /**\n * Returns the occurrence details based on its start time. If the\n * occurrence has an exception will return the details for that exception.\n *\n * NOTE: this method is intend to be used in conjunction\n * with the {@link ICAL.Event#iterator iterator} method.\n *\n * @param {Time} occurrence time occurrence\n * @return {occurrenceDetails} Information about the occurrence\n */\n getOccurrenceDetails(occurrence) {\n let id = occurrence.toString();\n let utcId = occurrence.convertToZone(Timezone.utcTimezone).toString();\n let item;\n let result = {\n //XXX: Clone?\n recurrenceId: occurrence\n };\n\n if (id in this.exceptions) {\n item = result.item = this.exceptions[id];\n result.startDate = item.startDate;\n result.endDate = item.endDate;\n result.item = item;\n } else if (utcId in this.exceptions) {\n item = this.exceptions[utcId];\n result.startDate = item.startDate;\n result.endDate = item.endDate;\n result.item = item;\n } else {\n // range exceptions (RANGE=THISANDFUTURE) have a\n // lower priority then direct exceptions but\n // must be accounted for first. Their item is\n // always the first exception with the range prop.\n let rangeExceptionId = this.findRangeException(\n occurrence\n );\n let end;\n\n if (rangeExceptionId) {\n let exception = this.exceptions[rangeExceptionId];\n\n // range exception must modify standard time\n // by the difference (if any) in start/end times.\n result.item = exception;\n\n let startDiff = this._rangeExceptionCache[rangeExceptionId];\n\n if (!startDiff) {\n let original = exception.recurrenceId.clone();\n let newStart = exception.startDate.clone();\n\n // zones must be same otherwise subtract may be incorrect.\n original.zone = newStart.zone;\n startDiff = newStart.subtractDate(original);\n\n this._rangeExceptionCache[rangeExceptionId] = startDiff;\n }\n\n let start = occurrence.clone();\n start.zone = exception.startDate.zone;\n start.addDuration(startDiff);\n\n end = start.clone();\n end.addDuration(exception.duration);\n\n result.startDate = start;\n result.endDate = end;\n } else {\n // no range exception standard expansion\n end = occurrence.clone();\n end.addDuration(this.duration);\n\n result.endDate = end;\n result.startDate = occurrence;\n result.item = this;\n }\n }\n\n return result;\n }\n\n /**\n * Builds a recur expansion instance for a specific point in time (defaults\n * to startDate).\n *\n * @param {Time=} startTime Starting point for expansion\n * @return {RecurExpansion} Expansion object\n */\n iterator(startTime) {\n return new RecurExpansion({\n component: this.component,\n dtstart: startTime || this.startDate\n });\n }\n\n /**\n * Checks if the event is recurring\n *\n * @return {Boolean} True, if event is recurring\n */\n isRecurring() {\n let comp = this.component;\n return comp.hasProperty('rrule') || comp.hasProperty('rdate');\n }\n\n /**\n * Checks if the event describes a recurrence exception. See\n * {@tutorial terminology} for details.\n *\n * @return {Boolean} True, if the event describes a recurrence exception\n */\n isRecurrenceException() {\n return this.component.hasProperty('recurrence-id');\n }\n\n /**\n * Returns the types of recurrences this event may have.\n *\n * Returned as an object with the following possible keys:\n *\n * - YEARLY\n * - MONTHLY\n * - WEEKLY\n * - DAILY\n * - MINUTELY\n * - SECONDLY\n *\n * @return {Object.}\n * Object of recurrence flags\n */\n getRecurrenceTypes() {\n let rules = this.component.getAllProperties('rrule');\n let i = 0;\n let len = rules.length;\n let result = Object.create(null);\n\n for (; i < len; i++) {\n let value = rules[i].getFirstValue();\n result[value.freq] = true;\n }\n\n return result;\n }\n\n /**\n * The uid of this event\n * @type {String}\n */\n get uid() {\n return this._firstProp('uid');\n }\n\n set uid(value) {\n this._setProp('uid', value);\n }\n\n /**\n * The start date\n * @type {Time}\n */\n get startDate() {\n return this._firstProp('dtstart');\n }\n\n set startDate(value) {\n this._setTime('dtstart', value);\n }\n\n /**\n * The end date. This can be the result directly from the property, or the\n * end date calculated from start date and duration. Setting the property\n * will remove any duration properties.\n * @type {Time}\n */\n get endDate() {\n let endDate = this._firstProp('dtend');\n if (!endDate) {\n let duration = this._firstProp('duration');\n endDate = this.startDate.clone();\n if (duration) {\n endDate.addDuration(duration);\n } else if (endDate.isDate) {\n endDate.day += 1;\n }\n }\n return endDate;\n }\n\n set endDate(value) {\n if (this.component.hasProperty('duration')) {\n this.component.removeProperty('duration');\n }\n this._setTime('dtend', value);\n }\n\n /**\n * The duration. This can be the result directly from the property, or the\n * duration calculated from start date and end date. Setting the property\n * will remove any `dtend` properties.\n * @type {Duration}\n */\n get duration() {\n let duration = this._firstProp('duration');\n if (!duration) {\n return this.endDate.subtractDateTz(this.startDate);\n }\n return duration;\n }\n\n set duration(value) {\n if (this.component.hasProperty('dtend')) {\n this.component.removeProperty('dtend');\n }\n\n this._setProp('duration', value);\n }\n\n /**\n * The location of the event.\n * @type {String}\n */\n get location() {\n return this._firstProp('location');\n }\n\n set location(value) {\n this._setProp('location', value);\n }\n\n /**\n * The attendees in the event\n * @type {Property[]}\n */\n get attendees() {\n //XXX: This is way lame we should have a better\n // data structure for this later.\n return this.component.getAllProperties('attendee');\n }\n\n /**\n * The event summary\n * @type {String}\n */\n get summary() {\n return this._firstProp('summary');\n }\n\n set summary(value) {\n this._setProp('summary', value);\n }\n\n /**\n * The event description.\n * @type {String}\n */\n get description() {\n return this._firstProp('description');\n }\n\n set description(value) {\n this._setProp('description', value);\n }\n\n /**\n * The event color from [rfc7986](https://datatracker.ietf.org/doc/html/rfc7986)\n * @type {String}\n */\n get color() {\n return this._firstProp('color');\n }\n\n set color(value) {\n this._setProp('color', value);\n }\n\n /**\n * The organizer value as an uri. In most cases this is a mailto: uri, but\n * it can also be something else, like urn:uuid:...\n * @type {String}\n */\n get organizer() {\n return this._firstProp('organizer');\n }\n\n set organizer(value) {\n this._setProp('organizer', value);\n }\n\n /**\n * The sequence value for this event. Used for scheduling\n * see {@tutorial terminology}.\n * @type {Number}\n */\n get sequence() {\n return this._firstProp('sequence');\n }\n\n set sequence(value) {\n this._setProp('sequence', value);\n }\n\n /**\n * The recurrence id for this event. See {@tutorial terminology} for details.\n * @type {Time}\n */\n get recurrenceId() {\n return this._firstProp('recurrence-id');\n }\n\n set recurrenceId(value) {\n this._setTime('recurrence-id', value);\n }\n\n /**\n * Set/update a time property's value.\n * This will also update the TZID of the property.\n *\n * TODO: this method handles the case where we are switching\n * from a known timezone to an implied timezone (one without TZID).\n * This does _not_ handle the case of moving between a known\n * (by TimezoneService) timezone to an unknown timezone...\n *\n * We will not add/remove/update the VTIMEZONE subcomponents\n * leading to invalid ICAL data...\n * @private\n * @param {String} propName The property name\n * @param {Time} time The time to set\n */\n _setTime(propName, time) {\n let prop = this.component.getFirstProperty(propName);\n\n if (!prop) {\n prop = new Property(propName);\n this.component.addProperty(prop);\n }\n\n // utc and local don't get a tzid\n if (\n time.zone === Timezone.localTimezone ||\n time.zone === Timezone.utcTimezone\n ) {\n // remove the tzid\n prop.removeParameter('tzid');\n } else {\n prop.setParameter('tzid', time.zone.tzid);\n }\n\n prop.setValue(time);\n }\n\n _setProp(name, value) {\n this.component.updatePropertyWithValue(name, value);\n }\n\n _firstProp(name) {\n return this.component.getFirstPropertyValue(name);\n }\n\n /**\n * The string representation of this event.\n * @return {String}\n */\n toString() {\n return this.component.toString();\n }\n}\n\nfunction compareRangeException(a, b) {\n if (a[0] > b[0]) return 1;\n if (b[0] > a[0]) return -1;\n return 0;\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * The ComponentParser is used to process a String or jCal Object,\n * firing callbacks for various found components, as well as completion.\n *\n * @example\n * var options = {\n * // when false no events will be emitted for type\n * parseEvent: true,\n * parseTimezone: true\n * };\n *\n * var parser = new ICAL.ComponentParser(options);\n *\n * parser.onevent(eventComponent) {\n * //...\n * }\n *\n * // ontimezone, etc...\n *\n * parser.oncomplete = function() {\n *\n * };\n *\n * parser.process(stringOrComponent);\n *\n * @memberof ICAL\n */\nclass ComponentParser {\n /**\n * Creates a new ICAL.ComponentParser instance.\n *\n * @param {Object=} options Component parser options\n * @param {Boolean} options.parseEvent Whether events should be parsed\n * @param {Boolean} options.parseTimezeone Whether timezones should be parsed\n */\n constructor(options) {\n if (typeof(options) === 'undefined') {\n options = {};\n }\n\n for (let [key, value] of Object.entries(options)) {\n this[key] = value;\n }\n }\n\n /**\n * When true, parse events\n *\n * @type {Boolean}\n */\n parseEvent = true;\n\n /**\n * When true, parse timezones\n *\n * @type {Boolean}\n */\n parseTimezone = true;\n\n\n /* SAX like events here for reference */\n\n /**\n * Fired when parsing is complete\n * @callback\n */\n oncomplete = /* c8 ignore next */ function() {};\n\n /**\n * Fired if an error occurs during parsing.\n *\n * @callback\n * @param {Error} err details of error\n */\n onerror = /* c8 ignore next */ function(err) {};\n\n /**\n * Fired when a top level component (VTIMEZONE) is found\n *\n * @callback\n * @param {Timezone} component Timezone object\n */\n ontimezone = /* c8 ignore next */ function(component) {};\n\n /**\n * Fired when a top level component (VEVENT) is found.\n *\n * @callback\n * @param {Event} component Top level component\n */\n onevent = /* c8 ignore next */ function(component) {};\n\n /**\n * Process a string or parse ical object. This function itself will return\n * nothing but will start the parsing process.\n *\n * Events must be registered prior to calling this method.\n *\n * @param {Component|String|Object} ical The component to process,\n * either in its final form, as a jCal Object, or string representation\n */\n process(ical) {\n //TODO: this is sync now in the future we will have a incremental parser.\n if (typeof(ical) === 'string') {\n ical = parse(ical);\n }\n\n if (!(ical instanceof Component)) {\n ical = new Component(ical);\n }\n\n let components = ical.getAllSubcomponents();\n let i = 0;\n let len = components.length;\n let component;\n\n for (; i < len; i++) {\n component = components[i];\n\n switch (component.name) {\n case 'vtimezone':\n if (this.parseTimezone) {\n let tzid = component.getFirstPropertyValue('tzid');\n if (tzid) {\n this.ontimezone(new Timezone({\n tzid: tzid,\n component: component\n }));\n }\n }\n break;\n case 'vevent':\n if (this.parseEvent) {\n this.onevent(new Event(component));\n }\n break;\n default:\n continue;\n }\n }\n\n //XXX: ideally we should do a \"nextTick\" here\n // so in all cases this is actually async.\n this.oncomplete();\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * The main ICAL module. Provides access to everything else.\n *\n * @alias ICAL\n * @namespace ICAL\n * @property {ICAL.design} design\n * @property {ICAL.helpers} helpers\n */\nvar ICALmodule = {\n /**\n * The number of characters before iCalendar line folding should occur\n * @type {Number}\n * @default 75\n */\n foldLength: 75,\n\n debug: false,\n\n /**\n * The character(s) to be used for a newline. The default value is provided by\n * rfc5545.\n * @type {String}\n * @default \"\\r\\n\"\n */\n newLineChar: '\\r\\n',\n\n Binary,\n Component,\n ComponentParser,\n Duration,\n Event,\n Period,\n Property,\n Recur,\n RecurExpansion,\n RecurIterator,\n Time,\n Timezone,\n TimezoneService,\n UtcOffset,\n VCardTime,\n\n parse,\n stringify,\n\n design,\n helpers\n};\n\nexport { ICALmodule as default };\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import './assets/index-Ctj4Wyhb.css';\nimport NcDateTimePickerNative from \"@nextcloud/vue/dist/Components/NcDateTimePickerNative.js\";\nimport NcButton from \"@nextcloud/vue/dist/Components/NcButton.js\";\nimport IconDelete from \"vue-material-design-icons/TrashCanOutline.vue\";\nimport IconAdd from \"vue-material-design-icons/Plus.vue\";\nimport { getFirstDay } from \"@nextcloud/l10n\";\nimport { getZoneString } from \"icalzone\";\nimport ICAL from \"ical.js\";\nimport { v4 } from \"uuid\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nfunction normalizeComponent(scriptExports, render2, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n if (render2) {\n options.render = render2;\n options.staticRenderFns = staticRenderFns;\n options._compiled = true;\n }\n {\n options._scopeId = \"data-v-\" + scopeId;\n }\n return {\n exports: scriptExports,\n options\n };\n}\nconst _sfc_main = {\n name: \"CalendarAvailability\",\n components: {\n NcDateTimePickerNative,\n NcButton,\n IconAdd,\n IconDelete\n },\n props: {\n slots: {\n type: Object,\n required: true\n },\n loading: {\n type: Boolean,\n default: false\n },\n l10nTo: {\n type: String,\n required: true\n },\n l10nDeleteSlot: {\n type: String,\n required: true\n },\n l10nEmptyDay: {\n type: String,\n required: true\n },\n l10nAddSlot: {\n type: String,\n required: true\n },\n l10nWeekDayListLabel: {\n type: String,\n default: \"Weekdays\"\n },\n l10nMonday: {\n type: String,\n required: true\n },\n l10nTuesday: {\n type: String,\n required: true\n },\n l10nWednesday: {\n type: String,\n required: true\n },\n l10nThursday: {\n type: String,\n required: true\n },\n l10nFriday: {\n type: String,\n required: true\n },\n l10nSaturday: {\n type: String,\n required: true\n },\n l10nSunday: {\n type: String,\n required: true\n },\n l10nStartPickerLabel: {\n type: Function,\n default: (dayName) => `Pick a start time for ${dayName}`\n },\n l10nEndPickerLabel: {\n type: Function,\n default: (dayName) => `Pick a end time for ${dayName}`\n }\n },\n data() {\n return {\n internalSlots: this.slotsToInternalData(this.slots)\n };\n },\n watch: {\n slots() {\n this.internalSlots = this.slotsToInternalData(this.slots);\n }\n },\n methods: {\n timeStampSlotsToDateObjectSlots(slots) {\n return slots.map((slot) => ({\n start: new Date(slot.start * 1e3),\n end: new Date(slot.end * 1e3)\n }));\n },\n slotsToInternalData() {\n const moToSa = [\n {\n id: \"MO\",\n displayName: this.l10nMonday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.MO)\n },\n {\n id: \"TU\",\n displayName: this.l10nTuesday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.TU)\n },\n {\n id: \"WE\",\n displayName: this.l10nWednesday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.WE)\n },\n {\n id: \"TH\",\n displayName: this.l10nThursday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.TH)\n },\n {\n id: \"FR\",\n displayName: this.l10nFriday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.FR)\n },\n {\n id: \"SA\",\n displayName: this.l10nSaturday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.SA)\n }\n ];\n const sunday = {\n id: \"SU\",\n displayName: this.l10nSunday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.SU)\n };\n return getFirstDay() === 1 ? [...moToSa, sunday] : [sunday, ...moToSa];\n },\n internalDataToSlots() {\n const converted = {};\n this.internalSlots.forEach(({ id, slots }) => {\n converted[id] = slots.map((slot) => ({\n start: Math.round(slot.start.getTime() / 1e3),\n end: Math.round(slot.end.getTime() / 1e3)\n }));\n });\n return converted;\n },\n addSlot(day) {\n const start = /* @__PURE__ */ new Date();\n start.setHours(9, 0, 0, 0);\n const end = /* @__PURE__ */ new Date();\n end.setHours(17, 0, 0, 0);\n day.slots.push({\n start,\n end\n });\n this.onChangeSlots();\n },\n removeSlot(day, idx) {\n day.slots.splice(idx, 1);\n this.onChangeSlots();\n },\n onChangeSlots() {\n this.$emit(\"update:slots\", this.internalDataToSlots());\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"ul\", { staticClass: \"week-day-container\", attrs: { \"aria-label\": _vm.l10nWeekDayListLabel } }, [_vm._l(_vm.internalSlots, function(day) {\n return [_c(\"li\", { key: `day-label-${day.id}`, staticClass: \"day-container\" }, [_c(\"div\", { staticClass: \"label-weekday\" }, [_c(\"span\", { attrs: { \"id\": day.displayName + \"-label\" } }, [_vm._v(_vm._s(day.displayName))])]), _c(\"div\", { key: `day-slots-${day.id}`, staticClass: \"availability-slots\" }, [_c(\"div\", { staticClass: \"availability-slot-group\" }, [_vm._l(day.slots, function(slot, idx) {\n return [_c(\"div\", { key: `slot-${day.id}-${idx}`, staticClass: \"availability-slot\" }, [_c(\"NcDateTimePickerNative\", { staticClass: \"start-date\", attrs: { \"id\": `start-${day.id}-${idx}`, \"type\": \"time\", \"label\": _vm.l10nStartPickerLabel?.(day.displayName), \"hide-label\": true }, on: { \"change\": _vm.onChangeSlots }, model: { value: slot.start, callback: function($$v) {\n _vm.$set(slot, \"start\", $$v);\n }, expression: \"slot.start\" } }), _c(\"span\", { staticClass: \"to-text\" }, [_vm._v(\" \" + _vm._s(_vm.l10nTo) + \" \")]), _c(\"NcDateTimePickerNative\", { staticClass: \"end-date\", attrs: { \"id\": `end-${day.id}-${idx}`, \"type\": \"time\", \"label\": _vm.l10nEndPickerLabel?.(day.displayName), \"hide-label\": true }, on: { \"change\": _vm.onChangeSlots }, model: { value: slot.end, callback: function($$v) {\n _vm.$set(slot, \"end\", $$v);\n }, expression: \"slot.end\" } }), _c(\"NcButton\", { key: `slot-${day.id}-${idx}-btn`, staticClass: \"button\", attrs: { \"type\": \"tertiary\", \"aria-label\": _vm.l10nDeleteSlot, \"title\": _vm.l10nDeleteSlot }, on: { \"click\": function($event) {\n return _vm.removeSlot(day, idx);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconDelete\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, true) })], 1)];\n })], 2), day.slots.length === 0 ? _c(\"span\", { staticClass: \"empty-content\" }, [_vm._v(\" \" + _vm._s(_vm.l10nEmptyDay) + \" \")]) : _vm._e()]), _c(\"NcButton\", { key: `add-slot-${day.id}`, staticClass: \"add-another button\", attrs: { \"disabled\": _vm.loading, \"title\": _vm.l10nAddSlot, \"aria-label\": _vm.l10nAddSlot }, on: { \"click\": function($event) {\n return _vm.addSlot(day);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconAdd\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, true) })], 1)];\n })], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"91e2d87d\"\n);\nconst CalendarAvailability = __component__.exports;\nconst logger = getLoggerBuilder().detectUser().setApp(\"@nextcloud/calendar-availability-vue\").build();\nfunction getEmptySlots() {\n return {\n MO: [],\n TU: [],\n WE: [],\n TH: [],\n FR: [],\n SA: [],\n SU: []\n };\n}\nfunction vavailabilityToSlots(vavailability) {\n const parsedIcal = ICAL.parse(vavailability);\n const vcalendarComp = new ICAL.Component(parsedIcal);\n const vavailabilityComp = vcalendarComp.getFirstSubcomponent(\"vavailability\");\n let timezoneId;\n const timezoneComp = vcalendarComp.getFirstSubcomponent(\"vtimezone\");\n if (timezoneComp) {\n timezoneId = timezoneComp.getFirstProperty(\"tzid\").getFirstValue();\n }\n const availableComps = vavailabilityComp.getAllSubcomponents(\"available\");\n const slots = getEmptySlots();\n availableComps.forEach((availableComp) => {\n const startIcalDate = availableComp.getFirstProperty(\"dtstart\").getFirstValue();\n const endIcalDate = availableComp.getFirstProperty(\"dtend\").getFirstValue();\n const rrule = availableComp.getFirstProperty(\"rrule\");\n const start = /* @__PURE__ */ new Date();\n start.setHours(startIcalDate.hour, startIcalDate.minute, 0, 0);\n const end = /* @__PURE__ */ new Date();\n end.setHours(endIcalDate.hour, endIcalDate.minute, 0, 0);\n if (rrule.getFirstValue().freq !== \"WEEKLY\") {\n logger.warn(\"rrule not supported\", {\n rrule: rrule.toICALString()\n });\n return;\n }\n rrule.getFirstValue().getComponent(\"BYDAY\").forEach((day) => {\n slots[day].push({\n start: start.getTime() / 1e3,\n end: end.getTime() / 1e3\n });\n });\n });\n return {\n slots,\n timezoneId\n };\n}\nfunction slotsToVavailability(slots, timezoneId) {\n const vcalendarComp = new ICAL.Component(\"vcalendar\");\n vcalendarComp.addPropertyWithValue(\"prodid\", \"Nextcloud DAV app\");\n const predefinedTimezoneIcal = getZoneString(timezoneId);\n if (predefinedTimezoneIcal) {\n const timezoneComp = new ICAL.Component(ICAL.parse(predefinedTimezoneIcal));\n vcalendarComp.addSubcomponent(timezoneComp);\n } else {\n const timezoneComp = new ICAL.Component(\"vtimezone\");\n timezoneComp.addPropertyWithValue(\"tzid\", timezoneId);\n vcalendarComp.addSubcomponent(timezoneComp);\n }\n const vavailabilityComp = new ICAL.Component(\"vavailability\");\n const deduplicated = slots.reduce((acc, slot) => {\n const start = new Date(slot.start * 1e3);\n const end = new Date(slot.end * 1e3);\n const key = [\n start.getHours(),\n start.getMinutes(),\n end.getHours(),\n end.getMinutes()\n ].join(\"-\");\n return {\n ...acc,\n [key]: [...acc[key] ?? [], slot]\n };\n }, {});\n Object.keys(deduplicated).map((key) => {\n const slots2 = deduplicated[key];\n const start = slots2[0].start;\n const end = slots2[0].end;\n const days = slots2.map((slot) => slot.day).filter((day, index, self) => self.indexOf(day) === index);\n const availableComp = new ICAL.Component(\"available\");\n const startTimeProp = availableComp.addPropertyWithValue(\"dtstart\", ICAL.Time.fromJSDate(new Date(start * 1e3), false));\n startTimeProp.setParameter(\"tzid\", timezoneId);\n const endTimeProp = availableComp.addPropertyWithValue(\"dtend\", ICAL.Time.fromJSDate(new Date(end * 1e3), false));\n endTimeProp.setParameter(\"tzid\", timezoneId);\n availableComp.addPropertyWithValue(\"uid\", v4());\n availableComp.addPropertyWithValue(\"rrule\", {\n freq: \"WEEKLY\",\n byday: days\n });\n return availableComp;\n }).map(vavailabilityComp.addSubcomponent.bind(vavailabilityComp));\n vcalendarComp.addSubcomponent(vavailabilityComp);\n return vcalendarComp.toString();\n}\nexport {\n CalendarAvailability,\n getEmptySlots,\n slotsToVavailability,\n vavailabilityToSlots\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createClient } from 'webdav'\nimport memoize from 'lodash/fp/memoize.js'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getCurrentUser, getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\n\nexport const getClient = memoize((service) => {\n\t// init webdav client\n\tconst remote = generateRemoteUrl(`dav/${service}/${getCurrentUser().uid}`)\n\tconst client = createClient(remote)\n\n\t// set CSRF token header\n\tconst setHeaders = (token) => {\n\t\tclient.setHeaders({\n\t\t\t// Add this so the server knows it is an request from the browser\n\t\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t\t// Inject user auth\n\t\t\trequesttoken: token ?? '',\n\t\t})\n\t}\n\n\t// refresh headers when request token changes\n\tonRequestTokenUpdate(setHeaders)\n\tsetHeaders(getRequestToken())\n\n\treturn client\n})\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvailabilityForm.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvailabilityForm.vue?vue&type=script&setup=true&lang=ts\"","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getClient } from '../dav/client.js'\nimport logger from './logger.js'\nimport { parseXML } from 'webdav'\n\nimport {\n\tslotsToVavailability,\n\tvavailabilityToSlots,\n} from '@nextcloud/calendar-availability-vue'\n\n/**\n *\n */\nexport function getEmptySlots() {\n\treturn {\n\t\tMO: [],\n\t\tTU: [],\n\t\tWE: [],\n\t\tTH: [],\n\t\tFR: [],\n\t\tSA: [],\n\t\tSU: [],\n\t}\n}\n\n/**\n *\n */\nexport async function findScheduleInboxAvailability() {\n\tconst client = getClient('calendars')\n\n\tconst response = await client.customRequest('inbox', {\n\t\tmethod: 'PROPFIND',\n\t\tdata: `\n\t\t\t\n\t\t\t \n\t\t\t\t\n\t\t\t \n\t\t\t`,\n\t})\n\n\tconst xml = await parseXML(await response.text())\n\n\tif (!xml) {\n\t\treturn undefined\n\t}\n\n\tconst availability = xml?.multistatus?.response[0]?.propstat?.prop['calendar-availability']\n\tif (!availability) {\n\t\treturn undefined\n\t}\n\n\treturn vavailabilityToSlots(availability)\n}\n\n/**\n * @param {any} slots -\n * @param {any} timezoneId -\n */\nexport async function saveScheduleInboxAvailability(slots, timezoneId) {\n\tconst all = [...Object.keys(slots).flatMap(dayId => slots[dayId].map(slot => ({\n\t\t...slot,\n\t\tday: dayId,\n\t})))]\n\n\tconst vavailability = slotsToVavailability(all, timezoneId)\n\n\tlogger.debug('New availability ical created', {\n\t\tvavailability,\n\t})\n\n\tconst client = getClient('calendars')\n\tawait client.customRequest('inbox', {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t \n\t\t\t\t\n\t\t\t\t ${vavailability}\n\t\t\t\t\n\t\t\t \n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Enable user status automation based on availability\n */\nexport async function enableUserStatusAutomation() {\n\treturn await axios.post(\n\t\tgenerateOcsUrl('/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\tappId: 'dav',\n\t\t\tconfigKey: 'user_status_automation',\n\t\t}),\n\t\t{\n\t\t\tconfigValue: 'yes',\n\t\t},\n\t)\n}\n\n/**\n * Disable user status automation based on availability\n */\nexport async function disableUserStatusAutomation() {\n\treturn await axios.delete(\n\t\tgenerateOcsUrl('/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\tappId: 'dav',\n\t\t\tconfigKey: 'user_status_automation',\n\t\t}),\n\t)\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvailabilityForm.vue?vue&type=style&index=0&id=e0a387ae&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvailabilityForm.vue?vue&type=style&index=0&id=e0a387ae&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AvailabilityForm.vue?vue&type=template&id=e0a387ae&scoped=true\"\nimport script from \"./AvailabilityForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AvailabilityForm.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AvailabilityForm.vue?vue&type=style&index=0&id=e0a387ae&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e0a387ae\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Availability.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Availability.vue?vue&type=script&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./Availability.vue?vue&type=template&id=3fd0c464\"\nimport script from \"./Availability.vue?vue&type=script&lang=js\"\nexport * from \"./Availability.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcSettingsSection',{attrs:{\"id\":\"availability\",\"name\":_vm.$t('dav', 'Availability'),\"description\":_vm.$t('dav', 'If you configure your working hours, other people will see when you are out of office when they book a meeting.')}},[_c('AvailabilityForm')],1),_vm._v(\" \"),(!_vm.hideAbsenceSettings)?_c('NcSettingsSection',{attrs:{\"id\":\"absence\",\"name\":_vm.$t('dav', 'Absence'),\"description\":_vm.$t('dav', 'Configure your next absence period.')}},[_c('AbsenceForm')],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue'\nimport { translate } from '@nextcloud/l10n'\nimport Availability from './views/Availability.vue'\n\nVue.prototype.$t = translate\n\nconst View = Vue.extend(Availability);\n\n(new View({})).$mount('#settings-personal-availability')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.availability-day[data-v-91e2d87d] {\n padding: 0 10px 0 10px;\n position: absolute;\n}\n.availability-slots[data-v-91e2d87d] {\n max-width: 332px;\n width: 100%;\n display: flex;\n justify-content: flex-start;\n white-space: nowrap;\n}\n.availability-slot[data-v-91e2d87d] {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.availability-slot-group[data-v-91e2d87d] {\n display: flex;\n flex-direction: column;\n}\n.time-zone[data-v-91e2d87d] {\n padding: 32px 12px 12px 0;\n}\n.week-day-container[data-v-91e2d87d] {\n box-sizing: border-box;\n margin-bottom: 32px;\n max-width: 500px;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n.button[data-v-91e2d87d] {\n align-self: flex-end;\n}\n.label-weekday[data-v-91e2d87d] {\n position: relative;\n display: flex;\n align-items: flex-start;\n min-width: 77px;\n width: 77px;\n}\n.label-weekday > span[data-v-91e2d87d] {\n height: 50px;\n display: flex;\n align-items: center;\n}\n.add-another[data-v-91e2d87d] {\n background-color: transparent;\n border: none;\n opacity: 0.5;\n display: inline-flex;\n padding: 0;\n margin: 0;\n margin-bottom: 3px;\n}\n.add-another[data-v-91e2d87d]:hover {\n opacity: 1;\n}\n.to-text[data-v-91e2d87d] {\n padding-right: 12px;\n}\n.time-zone-text[data-v-91e2d87d] {\n padding-left: 22px;\n}\n.empty-content[data-v-91e2d87d] {\n color: var(--color-text-lighter);\n display: inline-flex;\n align-items: center;\n}\n.start-date[data-v-91e2d87d] {\n padding-right: 12px;\n}\n.day-container[data-v-91e2d87d] {\n display: flex;\n max-width: 500px;\n width: 100%;\n gap: 24px;\n border-top: 1px solid var(--color-border);\n padding-top: calc(3 * var(--default-grid-baseline));\n margin-top: calc(2 * var(--default-grid-baseline));\n align-items: center;\n}\n.day-container > button[data-v-91e2d87d] {\n align-self: center;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/calendar-availability-vue/dist/assets/index-Ctj4Wyhb.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,sBAAsB;EACtB,kBAAkB;AACpB;AACA;EACE,gBAAgB;EAChB,WAAW;EACX,aAAa;EACb,2BAA2B;EAC3B,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,sBAAsB;AACxB;AACA;EACE,yBAAyB;AAC3B;AACA;EACE,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,WAAW;EACX,aAAa;EACb,sBAAsB;EACtB,uBAAuB;AACzB;AACA;EACE,oBAAoB;AACtB;AACA;EACE,kBAAkB;EAClB,aAAa;EACb,uBAAuB;EACvB,eAAe;EACf,WAAW;AACb;AACA;EACE,YAAY;EACZ,aAAa;EACb,mBAAmB;AACrB;AACA;EACE,6BAA6B;EAC7B,YAAY;EACZ,YAAY;EACZ,oBAAoB;EACpB,UAAU;EACV,SAAS;EACT,kBAAkB;AACpB;AACA;EACE,UAAU;AACZ;AACA;EACE,mBAAmB;AACrB;AACA;EACE,kBAAkB;AACpB;AACA;EACE,gCAAgC;EAChC,oBAAoB;EACpB,mBAAmB;AACrB;AACA;EACE,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,gBAAgB;EAChB,WAAW;EACX,SAAS;EACT,yCAAyC;EACzC,mDAAmD;EACnD,kDAAkD;EAClD,mBAAmB;AACrB;AACA;EACE,kBAAkB;AACpB\",\"sourcesContent\":[\".availability-day[data-v-91e2d87d] {\\n padding: 0 10px 0 10px;\\n position: absolute;\\n}\\n.availability-slots[data-v-91e2d87d] {\\n max-width: 332px;\\n width: 100%;\\n display: flex;\\n justify-content: flex-start;\\n white-space: nowrap;\\n}\\n.availability-slot[data-v-91e2d87d] {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n}\\n.availability-slot-group[data-v-91e2d87d] {\\n display: flex;\\n flex-direction: column;\\n}\\n.time-zone[data-v-91e2d87d] {\\n padding: 32px 12px 12px 0;\\n}\\n.week-day-container[data-v-91e2d87d] {\\n box-sizing: border-box;\\n margin-bottom: 32px;\\n max-width: 500px;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n}\\n.button[data-v-91e2d87d] {\\n align-self: flex-end;\\n}\\n.label-weekday[data-v-91e2d87d] {\\n position: relative;\\n display: flex;\\n align-items: flex-start;\\n min-width: 77px;\\n width: 77px;\\n}\\n.label-weekday > span[data-v-91e2d87d] {\\n height: 50px;\\n display: flex;\\n align-items: center;\\n}\\n.add-another[data-v-91e2d87d] {\\n background-color: transparent;\\n border: none;\\n opacity: 0.5;\\n display: inline-flex;\\n padding: 0;\\n margin: 0;\\n margin-bottom: 3px;\\n}\\n.add-another[data-v-91e2d87d]:hover {\\n opacity: 1;\\n}\\n.to-text[data-v-91e2d87d] {\\n padding-right: 12px;\\n}\\n.time-zone-text[data-v-91e2d87d] {\\n padding-left: 22px;\\n}\\n.empty-content[data-v-91e2d87d] {\\n color: var(--color-text-lighter);\\n display: inline-flex;\\n align-items: center;\\n}\\n.start-date[data-v-91e2d87d] {\\n padding-right: 12px;\\n}\\n.day-container[data-v-91e2d87d] {\\n display: flex;\\n max-width: 500px;\\n width: 100%;\\n gap: 24px;\\n border-top: 1px solid var(--color-border);\\n padding-top: calc(3 * var(--default-grid-baseline));\\n margin-top: calc(2 * var(--default-grid-baseline));\\n align-items: center;\\n}\\n.day-container > button[data-v-91e2d87d] {\\n align-self: center;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.absence[data-v-7fe2e3cc]{display:flex;flex-direction:column;gap:5px}.absence__dates[data-v-7fe2e3cc]{display:flex;gap:10px;width:100%}.absence__dates__picker[data-v-7fe2e3cc]{flex:1 auto}.absence__dates__picker[data-v-7fe2e3cc] .native-datetime-picker--input{margin-bottom:0}.absence__buttons[data-v-7fe2e3cc]{display:flex;gap:5px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dav/src/components/AbsenceForm.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,qBAAA,CACA,OAAA,CAEA,iCACC,YAAA,CACA,QAAA,CACA,UAAA,CAEA,yCACC,WAAA,CAEA,wEACC,eAAA,CAKH,mCACC,YAAA,CACA,OAAA\",\"sourcesContent\":[\"\\n.absence {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 5px;\\n\\n\\t&__dates {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 10px;\\n\\t\\twidth: 100%;\\n\\n\\t\\t&__picker {\\n\\t\\t\\tflex: 1 auto;\\n\\n\\t\\t\\t:deep(.native-datetime-picker--input) {\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 5px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `[data-v-e0a387ae] .availability-day{padding:0 10px 0 10px;position:absolute}[data-v-e0a387ae] .availability-slots{display:flex;white-space:normal}[data-v-e0a387ae] .availability-slot{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap}[data-v-e0a387ae] .availability-slot-group{display:flex;flex-direction:column}[data-v-e0a387ae] .mx-input-wrapper{width:85px}[data-v-e0a387ae] .mx-datepicker{width:97px}.time-zone[data-v-e0a387ae]{padding-block:32px 12px;padding-inline:0 12px;display:flex;flex-wrap:wrap}.time-zone__heading[data-v-e0a387ae]{margin-inline-end:calc(var(--default-grid-baseline)*2);line-height:var(--default-clickable-area);font-weight:bold}.grid-table[data-v-e0a387ae]{display:grid;margin-bottom:32px;grid-column-gap:24px;grid-row-gap:6px;grid-template-columns:min-content auto min-content;max-width:500px}.button[data-v-e0a387ae]{align-self:flex-end}[data-v-e0a387ae] .label-weekday{position:relative;display:inline-flex;padding-top:4px;align-self:center}[data-v-e0a387ae] .delete-slot{padding-bottom:unset}[data-v-e0a387ae] .add-another{align-self:center}.to-text[data-v-e0a387ae]{padding-inline-end:12px}.empty-content[data-v-e0a387ae]{align-self:center;color:var(--color-text-maxcontrast);margin-block-start:var(--default-grid-baseline)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dav/src/components/AvailabilityForm.vue\"],\"names\":[],\"mappings\":\"AACA,oCACC,qBAAA,CACA,iBAAA,CAGD,sCACC,YAAA,CACA,kBAAA,CAGD,qCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,cAAA,CAGD,2CACC,YAAA,CACA,qBAAA,CAGD,oCACC,UAAA,CAGD,iCACC,UAAA,CAGD,4BACC,uBAAA,CACA,qBAAA,CACA,YAAA,CACA,cAAA,CAEA,qCACC,sDAAA,CACA,yCAAA,CACA,gBAAA,CAIF,6BACC,YAAA,CACA,kBAAA,CACA,oBAAA,CACA,gBAAA,CACA,kDAAA,CACA,eAAA,CAGD,yBACC,mBAAA,CAGD,iCACC,iBAAA,CACA,mBAAA,CACA,eAAA,CACA,iBAAA,CAGD,+BACC,oBAAA,CAGD,+BACC,iBAAA,CAGD,0BACC,uBAAA,CAGD,gCACC,iBAAA,CACA,mCAAA,CACA,+CAAA\",\"sourcesContent\":[\"\\n:deep(.availability-day) {\\n\\tpadding: 0 10px 0 10px;\\n\\tposition: absolute;\\n}\\n\\n:deep(.availability-slots) {\\n\\tdisplay: flex;\\n\\twhite-space: normal;\\n}\\n\\n:deep(.availability-slot) {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n\\tflex-wrap: wrap;\\n}\\n\\n:deep(.availability-slot-group) {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n}\\n\\n:deep(.mx-input-wrapper) {\\n\\twidth: 85px;\\n}\\n\\n:deep(.mx-datepicker) {\\n\\twidth: 97px;\\n}\\n\\n.time-zone {\\n\\tpadding-block: 32px 12px;\\n\\tpadding-inline: 0 12px;\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\n\\t&__heading {\\n\\t\\tmargin-inline-end: calc(var(--default-grid-baseline) * 2);\\n\\t\\tline-height: var(--default-clickable-area);\\n\\t\\tfont-weight: bold;\\n\\t}\\n}\\n\\n.grid-table {\\n\\tdisplay: grid;\\n\\tmargin-bottom: 32px;\\n\\tgrid-column-gap: 24px;\\n\\tgrid-row-gap: 6px;\\n\\tgrid-template-columns: min-content auto min-content;\\n\\tmax-width: 500px;\\n}\\n\\n.button {\\n\\talign-self: flex-end;\\n}\\n\\n:deep(.label-weekday) {\\n\\tposition: relative;\\n\\tdisplay: inline-flex;\\n\\tpadding-top: 4px;\\n\\talign-self: center;\\n}\\n\\n:deep(.delete-slot) {\\n\\tpadding-bottom: unset;\\n}\\n\\n:deep(.add-another) {\\n\\talign-self: center;\\n}\\n\\n.to-text {\\n\\tpadding-inline-end: 12px;\\n}\\n\\n.empty-content {\\n\\talign-self: center;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tmargin-block-start: var(--default-grid-baseline);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getZoneString = exports.getZoneLines = void 0;\nconst zones_1 = require(\"./zones\"); // This module must be generated with `yarn run build-zones`.\nfunction renderZoneSub(data) {\n const { n, f, t, r, s } = data;\n return [\n `TZNAME:${n}`,\n `TZOFFSETFROM:${f}`,\n `TZOFFSETTO:${t || f}`,\n `DTSTART:${s || zones_1.defaultStart}`,\n ...(r ? [`RRULE:FREQ=${r.f || 'YEARLY'};BYMONTH=${r.m};BYDAY=${r.d}`] : []),\n ];\n}\n/**\n * Tries to resolve a given time zone to iCalendar time zone component\n * (`VTIMEZONE`) as string array (usually for further processing).\n * @param zoneName Time zone name (e.g. `America/Los_Angeles`)\n * @param includeWrapper Set to `false` to avoid including lines for\n * `BEGIN:VTIMEZONE` and `END:VTIMEZONE`.\n * @returns Lines of the iCalendar time zone component (`VTIMEZONE`), each line\n * individually as an array of strings.\n */\nfunction getZoneLines(zoneName, includeWrapper = true) {\n const zoneData = zones_1.zonesMap.get(zoneName);\n if (zoneData) {\n const { s, d } = zoneData;\n const lines = [\n ...(includeWrapper ? ['BEGIN:VTIMEZONE'] : []),\n `TZID:${zoneName}`,\n // `X-LIC-LOCATION:${zoneName}`, // Who uses this?\n 'BEGIN:STANDARD',\n ...renderZoneSub(s),\n 'END:STANDARD',\n ...(d ? [\n 'BEGIN:DAYLIGHT',\n ...renderZoneSub(d),\n 'END:DAYLIGHT',\n ] : []),\n ...(includeWrapper ? ['END:VTIMEZONE'] : []),\n ];\n return lines;\n }\n}\nexports.getZoneLines = getZoneLines;\n/**\n * Tries to resolve a given time zone to iCalendar time zone component\n * (`VTIMEZONE`) as string.\n * @param zoneName Time zone name (e.g. `America/Los_Angeles`)\n * @param includeWrapper Set to `false` to avoid including lines for\n * `BEGIN:VTIMEZONE` and `END:VTIMEZONE`.\n * @returns The iCalendar time zone component (`VTIMEZONE`) as string\n * with `\\r\\n` line breaks.\n */\nfunction getZoneString(zoneName, includeWrapper = true) {\n const lines = getZoneLines(zoneName, includeWrapper);\n return lines === null || lines === void 0 ? void 0 : lines.join('\\r\\n');\n}\nexports.getZoneString = getZoneString;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zonesMap = exports.defaultStart = void 0;\nexports.defaultStart = \"19700101T000000\";\nexports.zonesMap = new Map([\n [\n \"Africa/Abidjan\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Accra\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Addis_Ababa\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Algiers\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"CET\"\n }\n }\n ],\n [\n \"Africa/Asmara\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Bamako\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Bangui\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Banjul\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Bissau\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Blantyre\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Brazzaville\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Bujumbura\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Cairo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"EET\"\n }\n }\n ],\n [\n \"Africa/Casablanca\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"+01\"\n }\n }\n ],\n [\n \"Africa/Ceuta\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Africa/Conakry\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Dakar\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Dar_es_Salaam\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Djibouti\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Douala\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/El_Aaiun\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"+01\"\n }\n }\n ],\n [\n \"Africa/Freetown\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Gaborone\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Harare\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Johannesburg\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"SAST\"\n }\n }\n ],\n [\n \"Africa/Juba\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Kampala\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Khartoum\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Kigali\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Kinshasa\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Lagos\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Libreville\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Lome\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Luanda\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Lubumbashi\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Lusaka\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Malabo\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Maputo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Maseru\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"SAST\"\n }\n }\n ],\n [\n \"Africa/Mbabane\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"SAST\"\n }\n }\n ],\n [\n \"Africa/Mogadishu\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Monrovia\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Nairobi\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Ndjamena\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Niamey\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Nouakchott\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Ouagadougou\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Porto-Novo\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Sao_Tome\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Tripoli\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"EET\"\n }\n }\n ],\n [\n \"Africa/Tunis\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"CET\"\n }\n }\n ],\n [\n \"Africa/Windhoek\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"America/Adak\",\n {\n \"s\": {\n \"f\": \"-0900\",\n \"t\": \"-1000\",\n \"n\": \"HST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-1000\",\n \"t\": \"-0900\",\n \"n\": \"HDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Anchorage\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Anguilla\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Antigua\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Araguaina\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Buenos_Aires\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Catamarca\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Cordoba\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Jujuy\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/La_Rioja\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Mendoza\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Rio_Gallegos\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Salta\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/San_Juan\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/San_Luis\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Tucuman\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Ushuaia\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Aruba\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Asuncion\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700322T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"4SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701004T000000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Atikokan\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Bahia_Banderas\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Bahia\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Barbados\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Belem\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Belize\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Blanc-Sablon\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Boa_Vista\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Bogota\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Boise\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Cambridge_Bay\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Campo_Grande\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700215T000000\",\n \"r\": {\n \"m\": 2,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701101T000000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Cancun\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Caracas\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Cayenne\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Cayman\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Chicago\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Chihuahua\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Costa_Rica\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Creston\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Cuiaba\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700215T000000\",\n \"r\": {\n \"m\": 2,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701101T000000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Curacao\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Danmarkshavn\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"America/Dawson_Creek\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Dawson\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Denver\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Detroit\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Dominica\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Edmonton\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Eirunepe\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/El_Salvador\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Fort_Nelson\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Fortaleza\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Glace_Bay\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Godthab\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701024T230000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SA\"\n }\n },\n \"d\": {\n \"f\": \"-0300\",\n \"t\": \"-0200\",\n \"n\": \"-02\",\n \"s\": \"19700328T220000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SA\"\n }\n }\n }\n ],\n [\n \"America/Goose_Bay\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Grand_Turk\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Grenada\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Guadeloupe\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Guatemala\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Guayaquil\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Guyana\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Halifax\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Havana\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"CST\",\n \"s\": \"19701101T010000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"CDT\",\n \"s\": \"19700308T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Hermosillo\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Indiana/Indianapolis\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Knox\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Marengo\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Petersburg\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Tell_City\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Vevay\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Vincennes\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Winamac\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Inuvik\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Iqaluit\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Jamaica\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Juneau\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Kentucky/Louisville\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Kentucky/Monticello\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Kralendijk\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/La_Paz\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Lima\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Los_Angeles\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Lower_Princes\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Maceio\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Managua\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Manaus\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Marigot\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Martinique\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Matamoros\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Mazatlan\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Menominee\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Merida\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Metlakatla\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Mexico_City\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Miquelon\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0300\",\n \"t\": \"-0200\",\n \"n\": \"-02\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Moncton\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Monterrey\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Montevideo\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Montserrat\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Nassau\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/New_York\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Nipigon\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Nome\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Noronha\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"n\": \"-02\"\n }\n }\n ],\n [\n \"America/North_Dakota/Beulah\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/North_Dakota/Center\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/North_Dakota/New_Salem\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Ojinaga\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Panama\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Pangnirtung\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Paramaribo\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Phoenix\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Port_of_Spain\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Port-au-Prince\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Porto_Velho\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Puerto_Rico\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Punta_Arenas\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Rainy_River\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Rankin_Inlet\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Recife\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Regina\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Resolute\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Rio_Branco\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Santarem\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Santiago\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700405T000000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19700906T000000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Santo_Domingo\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Sao_Paulo\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19700215T000000\",\n \"r\": {\n \"m\": 2,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"-0300\",\n \"t\": \"-0200\",\n \"n\": \"-02\",\n \"s\": \"19701101T000000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Scoresbysund\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"t\": \"-0100\",\n \"n\": \"-01\",\n \"s\": \"19701025T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0100\",\n \"t\": \"+0000\",\n \"n\": \"+00\",\n \"s\": \"19700329T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"America/Sitka\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/St_Barthelemy\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Johns\",\n {\n \"s\": {\n \"f\": \"-0230\",\n \"t\": \"-0330\",\n \"n\": \"NST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0330\",\n \"t\": \"-0230\",\n \"n\": \"NDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/St_Kitts\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Lucia\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Thomas\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Vincent\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Swift_Current\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Tegucigalpa\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Thule\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Thunder_Bay\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Tijuana\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Toronto\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Tortola\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Vancouver\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Whitehorse\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Winnipeg\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Yakutat\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Yellowknife\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"Antarctica/Casey\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Antarctica/Davis\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Antarctica/DumontDUrville\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Antarctica/Macquarie\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Antarctica/Mawson\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Antarctica/McMurdo\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"t\": \"+1200\",\n \"n\": \"NZST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1200\",\n \"t\": \"+1300\",\n \"n\": \"NZDT\",\n \"s\": \"19700927T020000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Antarctica/Palmer\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Antarctica/Rothera\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Antarctica/Syowa\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Antarctica/Troll\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0000\",\n \"n\": \"+00\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0200\",\n \"n\": \"+02\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Antarctica/Vostok\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Arctic/Longyearbyen\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Aden\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Almaty\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Amman\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701030T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1FR\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700326T235959\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1TH\"\n }\n }\n }\n ],\n [\n \"Asia/Anadyr\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Asia/Aqtau\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Aqtobe\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Ashgabat\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Atyrau\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Baghdad\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Bahrain\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Baku\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Bangkok\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Barnaul\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Beirut\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T000000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Bishkek\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Brunei\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Chita\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Choibalsan\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Colombo\",\n {\n \"s\": {\n \"f\": \"+0530\",\n \"n\": \"+0530\"\n }\n }\n ],\n [\n \"Asia/Damascus\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701030T000000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1FR\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700327T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1FR\"\n }\n }\n }\n ],\n [\n \"Asia/Dhaka\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Dili\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Dubai\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Dushanbe\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Famagusta\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Gaza\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701031T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SA\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700328T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"4SA\"\n }\n }\n }\n ],\n [\n \"Asia/Hebron\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701031T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SA\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700328T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"4SA\"\n }\n }\n }\n ],\n [\n \"Asia/Ho_Chi_Minh\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Hong_Kong\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"HKT\"\n }\n }\n ],\n [\n \"Asia/Hovd\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Irkutsk\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Istanbul\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Jakarta\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"WIB\"\n }\n }\n ],\n [\n \"Asia/Jayapura\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"WIT\"\n }\n }\n ],\n [\n \"Asia/Jerusalem\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"IST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"IDT\",\n \"s\": \"19700327T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1FR\"\n }\n }\n }\n ],\n [\n \"Asia/Kabul\",\n {\n \"s\": {\n \"f\": \"+0430\",\n \"n\": \"+0430\"\n }\n }\n ],\n [\n \"Asia/Kamchatka\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Asia/Karachi\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"PKT\"\n }\n }\n ],\n [\n \"Asia/Kathmandu\",\n {\n \"s\": {\n \"f\": \"+0545\",\n \"n\": \"+0545\"\n }\n }\n ],\n [\n \"Asia/Khandyga\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Kolkata\",\n {\n \"s\": {\n \"f\": \"+0530\",\n \"n\": \"IST\"\n }\n }\n ],\n [\n \"Asia/Krasnoyarsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Kuala_Lumpur\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Kuching\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Kuwait\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Macau\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"Asia/Magadan\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Asia/Makassar\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"WITA\"\n }\n }\n ],\n [\n \"Asia/Manila\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"PST\"\n }\n }\n ],\n [\n \"Asia/Muscat\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Nicosia\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Novokuznetsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Novosibirsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Omsk\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Oral\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Phnom_Penh\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Pontianak\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"WIB\"\n }\n }\n ],\n [\n \"Asia/Pyongyang\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"KST\"\n }\n }\n ],\n [\n \"Asia/Qatar\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Qyzylorda\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Riyadh\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Sakhalin\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Asia/Samarkand\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Seoul\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"KST\"\n }\n }\n ],\n [\n \"Asia/Shanghai\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"Asia/Singapore\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Srednekolymsk\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Asia/Taipei\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"Asia/Tashkent\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Tbilisi\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Tehran\",\n {\n \"s\": {\n \"f\": \"+0430\",\n \"t\": \"+0330\",\n \"n\": \"+0330\",\n \"s\": \"19700921T000000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"+0330\",\n \"t\": \"+0430\",\n \"n\": \"+0430\",\n \"s\": \"19700321T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"3SU\"\n }\n }\n }\n ],\n [\n \"Asia/Thimphu\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Tokyo\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"JST\"\n }\n }\n ],\n [\n \"Asia/Tomsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Ulaanbaatar\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Urumqi\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Ust-Nera\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Asia/Vientiane\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Vladivostok\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Asia/Yakutsk\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Yangon\",\n {\n \"s\": {\n \"f\": \"+0630\",\n \"n\": \"+0630\"\n }\n }\n ],\n [\n \"Asia/Yekaterinburg\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Yerevan\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Atlantic/Azores\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"t\": \"-0100\",\n \"n\": \"-01\",\n \"s\": \"19701025T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0100\",\n \"t\": \"+0000\",\n \"n\": \"+00\",\n \"s\": \"19700329T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Bermuda\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Canary\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Cape_Verde\",\n {\n \"s\": {\n \"f\": \"-0100\",\n \"n\": \"-01\"\n }\n }\n ],\n [\n \"Atlantic/Faroe\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Madeira\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Reykjavik\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Atlantic/South_Georgia\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"n\": \"-02\"\n }\n }\n ],\n [\n \"Atlantic/St_Helena\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Atlantic/Stanley\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Australia/Adelaide\",\n {\n \"s\": {\n \"f\": \"+1030\",\n \"t\": \"+0930\",\n \"n\": \"ACST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0930\",\n \"t\": \"+1030\",\n \"n\": \"ACDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Brisbane\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"AEST\"\n }\n }\n ],\n [\n \"Australia/Broken_Hill\",\n {\n \"s\": {\n \"f\": \"+1030\",\n \"t\": \"+0930\",\n \"n\": \"ACST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0930\",\n \"t\": \"+1030\",\n \"n\": \"ACDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Currie\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Darwin\",\n {\n \"s\": {\n \"f\": \"+0930\",\n \"n\": \"ACST\"\n }\n }\n ],\n [\n \"Australia/Eucla\",\n {\n \"s\": {\n \"f\": \"+0845\",\n \"n\": \"+0845\"\n }\n }\n ],\n [\n \"Australia/Hobart\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Lindeman\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"AEST\"\n }\n }\n ],\n [\n \"Australia/Lord_Howe\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1030\",\n \"n\": \"+1030\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1030\",\n \"t\": \"+1100\",\n \"n\": \"+11\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Melbourne\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Perth\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"AWST\"\n }\n }\n ],\n [\n \"Australia/Sydney\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Etc/GMT-0\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/GMT-1\",\n {\n \"s\": {\n \"f\": \"-0100\",\n \"n\": \"-01\"\n }\n }\n ],\n [\n \"Etc/GMT-10\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"-10\"\n }\n }\n ],\n [\n \"Etc/GMT-11\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"-11\"\n }\n }\n ],\n [\n \"Etc/GMT-12\",\n {\n \"s\": {\n \"f\": \"-1200\",\n \"n\": \"-12\"\n }\n }\n ],\n [\n \"Etc/GMT-2\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"n\": \"-02\"\n }\n }\n ],\n [\n \"Etc/GMT-3\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Etc/GMT-4\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"Etc/GMT-5\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"Etc/GMT-6\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"-06\"\n }\n }\n ],\n [\n \"Etc/GMT-7\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"-07\"\n }\n }\n ],\n [\n \"Etc/GMT-8\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"n\": \"-08\"\n }\n }\n ],\n [\n \"Etc/GMT-9\",\n {\n \"s\": {\n \"f\": \"-0900\",\n \"n\": \"-09\"\n }\n }\n ],\n [\n \"Etc/GMT\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/GMT+0\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/GMT+1\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"+01\"\n }\n }\n ],\n [\n \"Etc/GMT+10\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Etc/GMT+11\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Etc/GMT+12\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Etc/GMT+13\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Etc/GMT+14\",\n {\n \"s\": {\n \"f\": \"+1400\",\n \"n\": \"+14\"\n }\n }\n ],\n [\n \"Etc/GMT+2\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"+02\"\n }\n }\n ],\n [\n \"Etc/GMT+3\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Etc/GMT+4\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Etc/GMT+5\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Etc/GMT+6\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Etc/GMT+7\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Etc/GMT+8\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Etc/GMT+9\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Etc/GMT0\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/Greenwich\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/UCT\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UCT\"\n }\n }\n ],\n [\n \"Etc/Universal\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UTC\"\n }\n }\n ],\n [\n \"Etc/UTC\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UTC\"\n }\n }\n ],\n [\n \"Etc/Zulu\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UTC\"\n }\n }\n ],\n [\n \"Europe/Amsterdam\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Andorra\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Astrakhan\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Athens\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Belgrade\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Berlin\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Bratislava\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Brussels\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Bucharest\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Budapest\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Busingen\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Chisinau\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Copenhagen\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Dublin\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"IST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Gibraltar\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Guernsey\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Helsinki\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Isle_of_Man\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Istanbul\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Europe/Jersey\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Kaliningrad\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"EET\"\n }\n }\n ],\n [\n \"Europe/Kiev\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Kirov\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Europe/Lisbon\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Ljubljana\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/London\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Luxembourg\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Madrid\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Malta\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Mariehamn\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Minsk\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Europe/Monaco\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Moscow\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"MSK\"\n }\n }\n ],\n [\n \"Europe/Nicosia\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Oslo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Paris\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Podgorica\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Prague\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Riga\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Rome\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Samara\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/San_Marino\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Sarajevo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Saratov\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Simferopol\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"MSK\"\n }\n }\n ],\n [\n \"Europe/Skopje\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Sofia\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Stockholm\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Tallinn\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Tirane\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Ulyanovsk\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Uzhgorod\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vaduz\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vatican\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vienna\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vilnius\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Volgograd\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Warsaw\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Zagreb\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Zaporozhye\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Zurich\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Indian/Antananarivo\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Indian/Chagos\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Indian/Christmas\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Indian/Cocos\",\n {\n \"s\": {\n \"f\": \"+0630\",\n \"n\": \"+0630\"\n }\n }\n ],\n [\n \"Indian/Comoro\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Indian/Kerguelen\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Indian/Mahe\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Indian/Maldives\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Indian/Mauritius\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Indian/Mayotte\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Indian/Reunion\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Pacific/Apia\",\n {\n \"s\": {\n \"f\": \"+1400\",\n \"t\": \"+1300\",\n \"n\": \"+13\",\n \"s\": \"19700405T040000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1300\",\n \"t\": \"+1400\",\n \"n\": \"+14\",\n \"s\": \"19700927T030000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Auckland\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"t\": \"+1200\",\n \"n\": \"NZST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1200\",\n \"t\": \"+1300\",\n \"n\": \"NZDT\",\n \"s\": \"19700927T020000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Bougainville\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Chatham\",\n {\n \"s\": {\n \"f\": \"+1345\",\n \"t\": \"+1245\",\n \"n\": \"+1245\",\n \"s\": \"19700405T034500\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1245\",\n \"t\": \"+1345\",\n \"n\": \"+1345\",\n \"s\": \"19700927T024500\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Chuuk\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Pacific/Easter\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"-06\",\n \"s\": \"19700404T220000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SA\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"-05\",\n \"s\": \"19700905T220000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"1SA\"\n }\n }\n }\n ],\n [\n \"Pacific/Efate\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Enderbury\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Pacific/Fakaofo\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Pacific/Fiji\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"t\": \"+1200\",\n \"n\": \"+12\",\n \"s\": \"19700118T030000\",\n \"r\": {\n \"m\": 1,\n \"d\": \"-2SU\"\n }\n },\n \"d\": {\n \"f\": \"+1200\",\n \"t\": \"+1300\",\n \"n\": \"+13\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Funafuti\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Galapagos\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"-06\"\n }\n }\n ],\n [\n \"Pacific/Gambier\",\n {\n \"s\": {\n \"f\": \"-0900\",\n \"n\": \"-09\"\n }\n }\n ],\n [\n \"Pacific/Guadalcanal\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Guam\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"ChST\"\n }\n }\n ],\n [\n \"Pacific/Honolulu\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"HST\"\n }\n }\n ],\n [\n \"Pacific/Kiritimati\",\n {\n \"s\": {\n \"f\": \"+1400\",\n \"n\": \"+14\"\n }\n }\n ],\n [\n \"Pacific/Kosrae\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Kwajalein\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Majuro\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Marquesas\",\n {\n \"s\": {\n \"f\": \"-0930\",\n \"n\": \"-0930\"\n }\n }\n ],\n [\n \"Pacific/Midway\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"SST\"\n }\n }\n ],\n [\n \"Pacific/Nauru\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Niue\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"-11\"\n }\n }\n ],\n [\n \"Pacific/Norfolk\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Noumea\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Pago_Pago\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"SST\"\n }\n }\n ],\n [\n \"Pacific/Palau\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Pacific/Pitcairn\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"n\": \"-08\"\n }\n }\n ],\n [\n \"Pacific/Pohnpei\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Port_Moresby\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Pacific/Rarotonga\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"-10\"\n }\n }\n ],\n [\n \"Pacific/Saipan\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"ChST\"\n }\n }\n ],\n [\n \"Pacific/Tahiti\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"-10\"\n }\n }\n ],\n [\n \"Pacific/Tarawa\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Tongatapu\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Pacific/Wake\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Wallis\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ]\n]);\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nmodule.exports = LazyWrapper;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nmodule.exports = baseLodash;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var identity = require('./identity'),\n metaMap = require('./_metaMap');\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n};\n\nmodule.exports = baseSetData;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\nmodule.exports = composeArgs;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\nmodule.exports = composeArgsRight;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\nmodule.exports = countHolders;\n","var createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\nmodule.exports = createBind;\n","var baseCreate = require('./_baseCreate'),\n isObject = require('./isObject');\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\nmodule.exports = createCtor;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n createHybrid = require('./_createHybrid'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createCurry;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n countHolders = require('./_countHolders'),\n createCtor = require('./_createCtor'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n reorder = require('./_reorder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_ARY_FLAG = 128,\n WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\nmodule.exports = createHybrid;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createPartial;\n","var isLaziable = require('./_isLaziable'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\nmodule.exports = createRecurry;\n","var baseSetData = require('./_baseSetData'),\n createBind = require('./_createBind'),\n createCurry = require('./_createCurry'),\n createHybrid = require('./_createHybrid'),\n createPartial = require('./_createPartial'),\n getData = require('./_getData'),\n mergeData = require('./_mergeData'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString'),\n toInteger = require('./toInteger');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\nmodule.exports = createWrap;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var metaMap = require('./_metaMap'),\n noop = require('./noop');\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n","var realNames = require('./_realNames');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nmodule.exports = getFuncName;\n","/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\nmodule.exports = getHolder;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\nmodule.exports = getWrapDetails;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\nmodule.exports = insertWrapDetails;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var LazyWrapper = require('./_LazyWrapper'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n lodash = require('./wrapperLodash');\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nmodule.exports = isLaziable;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n replaceHolders = require('./_replaceHolders');\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n}\n\nmodule.exports = mergeData;\n","var WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\n","var copyArray = require('./_copyArray'),\n isIndex = require('./_isIndex');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\nmodule.exports = reorder;\n","/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\nmodule.exports = replaceHolders;\n","var baseSetData = require('./_baseSetData'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nmodule.exports = setData;\n","var getWrapDetails = require('./_getWrapDetails'),\n insertWrapDetails = require('./_insertWrapDetails'),\n setToString = require('./_setToString'),\n updateWrapDetails = require('./_updateWrapDetails');\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nmodule.exports = setWrapToString;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var arrayEach = require('./_arrayEach'),\n arrayIncludes = require('./_arrayIncludes');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\nmodule.exports = updateWrapDetails;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n copyArray = require('./_copyArray');\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nmodule.exports = wrapperClone;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_ARY_FLAG = 128;\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\nfunction ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n}\n\nmodule.exports = ary;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nmodule.exports = curry;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var mapping = require('./_mapping'),\n fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n return n == 2\n ? function(a, b) { return func.apply(undefined, arguments); }\n : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n return n == 2\n ? function(a, b) { return func(a, b); }\n : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n var length = array ? array.length : 0,\n result = Array(length);\n\n while (length--) {\n result[length] = array[length];\n }\n return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n return function(object) {\n return func({}, object);\n };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n return function() {\n var length = arguments.length,\n lastIndex = length - 1,\n args = Array(length);\n\n while (length--) {\n args[length] = arguments[length];\n }\n var array = args[start],\n otherArgs = args.slice(0, start);\n\n if (array) {\n push.apply(otherArgs, array);\n }\n if (start != lastIndex) {\n push.apply(otherArgs, args.slice(start + 1));\n }\n return func.apply(this, otherArgs);\n };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return;\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var result = args[0] = cloner.apply(undefined, args);\n func.apply(undefined, args);\n return result;\n };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n var isLib = typeof name == 'function',\n isObj = name === Object(name);\n\n if (isObj) {\n options = func;\n func = name;\n name = undefined;\n }\n if (func == null) {\n throw new TypeError;\n }\n options || (options = {});\n\n var config = {\n 'cap': 'cap' in options ? options.cap : true,\n 'curry': 'curry' in options ? options.curry : true,\n 'fixed': 'fixed' in options ? options.fixed : true,\n 'immutable': 'immutable' in options ? options.immutable : true,\n 'rearg': 'rearg' in options ? options.rearg : true\n };\n\n var defaultHolder = isLib ? func : fallbackHolder,\n forceCurry = ('curry' in options) && options.curry,\n forceFixed = ('fixed' in options) && options.fixed,\n forceRearg = ('rearg' in options) && options.rearg,\n pristine = isLib ? func.runInContext() : undefined;\n\n var helpers = isLib ? func : {\n 'ary': util.ary,\n 'assign': util.assign,\n 'clone': util.clone,\n 'curry': util.curry,\n 'forEach': util.forEach,\n 'isArray': util.isArray,\n 'isError': util.isError,\n 'isFunction': util.isFunction,\n 'isWeakMap': util.isWeakMap,\n 'iteratee': util.iteratee,\n 'keys': util.keys,\n 'rearg': util.rearg,\n 'toInteger': util.toInteger,\n 'toPath': util.toPath\n };\n\n var ary = helpers.ary,\n assign = helpers.assign,\n clone = helpers.clone,\n curry = helpers.curry,\n each = helpers.forEach,\n isArray = helpers.isArray,\n isError = helpers.isError,\n isFunction = helpers.isFunction,\n isWeakMap = helpers.isWeakMap,\n keys = helpers.keys,\n rearg = helpers.rearg,\n toInteger = helpers.toInteger,\n toPath = helpers.toPath;\n\n var aryMethodKeys = keys(mapping.aryMethod);\n\n var wrappers = {\n 'castArray': function(castArray) {\n return function() {\n var value = arguments[0];\n return isArray(value)\n ? castArray(cloneArray(value))\n : castArray.apply(undefined, arguments);\n };\n },\n 'iteratee': function(iteratee) {\n return function() {\n var func = arguments[0],\n arity = arguments[1],\n result = iteratee(func, arity),\n length = result.length;\n\n if (config.cap && typeof arity == 'number') {\n arity = arity > 2 ? (arity - 2) : 1;\n return (length && length <= arity) ? result : baseAry(result, arity);\n }\n return result;\n };\n },\n 'mixin': function(mixin) {\n return function(source) {\n var func = this;\n if (!isFunction(func)) {\n return mixin(func, Object(source));\n }\n var pairs = [];\n each(keys(source), function(key) {\n if (isFunction(source[key])) {\n pairs.push([key, func.prototype[key]]);\n }\n });\n\n mixin(func, Object(source));\n\n each(pairs, function(pair) {\n var value = pair[1];\n if (isFunction(value)) {\n func.prototype[pair[0]] = value;\n } else {\n delete func.prototype[pair[0]];\n }\n });\n return func;\n };\n },\n 'nthArg': function(nthArg) {\n return function(n) {\n var arity = n < 0 ? 1 : (toInteger(n) + 1);\n return curry(nthArg(n), arity);\n };\n },\n 'rearg': function(rearg) {\n return function(func, indexes) {\n var arity = indexes ? indexes.length : 0;\n return curry(rearg(func, indexes), arity);\n };\n },\n 'runInContext': function(runInContext) {\n return function(context) {\n return baseConvert(util, runInContext(context), options);\n };\n }\n };\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Casts `func` to a function with an arity capped iteratee if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @returns {Function} Returns the cast function.\n */\n function castCap(name, func) {\n if (config.cap) {\n var indexes = mapping.iterateeRearg[name];\n if (indexes) {\n return iterateeRearg(func, indexes);\n }\n var n = !isLib && mapping.iterateeAry[name];\n if (n) {\n return iterateeAry(func, n);\n }\n }\n return func;\n }\n\n /**\n * Casts `func` to a curried function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castCurry(name, func, n) {\n return (forceCurry || (config.curry && n > 1))\n ? curry(func, n)\n : func;\n }\n\n /**\n * Casts `func` to a fixed arity function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the cast function.\n */\n function castFixed(name, func, n) {\n if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n var data = mapping.methodSpread[name],\n start = data && data.start;\n\n return start === undefined ? ary(func, n) : flatSpread(func, start);\n }\n return func;\n }\n\n /**\n * Casts `func` to an rearged function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castRearg(name, func, n) {\n return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n : func;\n }\n\n /**\n * Creates a clone of `object` by `path`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {Array|string} path The path to clone by.\n * @returns {Object} Returns the cloned object.\n */\n function cloneByPath(object, path) {\n path = toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n result = clone(Object(object)),\n nested = result;\n\n while (nested != null && ++index < length) {\n var key = path[index],\n value = nested[key];\n\n if (value != null &&\n !(isFunction(value) || isError(value) || isWeakMap(value))) {\n nested[key] = clone(index == lastIndex ? value : Object(value));\n }\n nested = nested[key];\n }\n return result;\n }\n\n /**\n * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied.\n *\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function} Returns the converted `lodash`.\n */\n function convertLib(options) {\n return _.runInContext.convert(options)(undefined);\n }\n\n /**\n * Create a converter function for `func` of `name`.\n *\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @returns {Function} Returns the new converter function.\n */\n function createConverter(name, func) {\n var realName = mapping.aliasToReal[name] || name,\n methodName = mapping.remap[realName] || realName,\n oldOptions = options;\n\n return function(options) {\n var newUtil = isLib ? pristine : helpers,\n newFunc = isLib ? pristine[methodName] : func,\n newOptions = assign(assign({}, oldOptions), options);\n\n return baseConvert(newUtil, realName, newFunc, newOptions);\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n * arguments, ignoring any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap iteratee arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\n function iterateeAry(func, n) {\n return overArg(func, function(func) {\n return typeof func == 'function' ? baseAry(func, n) : func;\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee with arguments\n * arranged according to the specified `indexes` where the argument value at\n * the first index is provided as the first argument, the argument value at\n * the second index is provided as the second argument, and so on.\n *\n * @private\n * @param {Function} func The function to rearrange iteratee arguments for.\n * @param {number[]} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n */\n function iterateeRearg(func, indexes) {\n return overArg(func, function(func) {\n var n = indexes.length;\n return baseArity(rearg(baseAry(func, n), indexes), n);\n });\n }\n\n /**\n * Creates a function that invokes `func` with its first argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return func();\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var index = config.rearg ? 0 : (length - 1);\n args[index] = transform(args[index]);\n return func.apply(undefined, args);\n };\n }\n\n /**\n * Creates a function that wraps `func` and applys the conversions\n * rules by `name`.\n *\n * @private\n * @param {string} name The name of the function to wrap.\n * @param {Function} func The function to wrap.\n * @returns {Function} Returns the converted function.\n */\n function wrap(name, func, placeholder) {\n var result,\n realName = mapping.aliasToReal[name] || name,\n wrapped = func,\n wrapper = wrappers[realName];\n\n if (wrapper) {\n wrapped = wrapper(func);\n }\n else if (config.immutable) {\n if (mapping.mutate.array[realName]) {\n wrapped = wrapImmutable(func, cloneArray);\n }\n else if (mapping.mutate.object[realName]) {\n wrapped = wrapImmutable(func, createCloner(func));\n }\n else if (mapping.mutate.set[realName]) {\n wrapped = wrapImmutable(func, cloneByPath);\n }\n }\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(otherName) {\n if (realName == otherName) {\n var data = mapping.methodSpread[realName],\n afterRearg = data && data.afterRearg;\n\n result = afterRearg\n ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n result = castCap(realName, result);\n result = castCurry(realName, result, aryKey);\n return false;\n }\n });\n return !result;\n });\n\n result || (result = wrapped);\n if (result == func) {\n result = forceCurry ? curry(result, 1) : function() {\n return func.apply(this, arguments);\n };\n }\n result.convert = createConverter(realName, func);\n result.placeholder = func.placeholder = placeholder;\n\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n if (!isObj) {\n return wrap(name, func, defaultHolder);\n }\n var _ = func;\n\n // Convert methods by ary cap.\n var pairs = [];\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(key) {\n var func = _[mapping.remap[key] || key];\n if (func) {\n pairs.push([key, wrap(key, func, _)]);\n }\n });\n });\n\n // Convert remaining methods.\n each(keys(_), function(key) {\n var func = _[key];\n if (typeof func == 'function') {\n var length = pairs.length;\n while (length--) {\n if (pairs[length][0] == key) {\n return;\n }\n }\n func.convert = createConverter(key, func);\n pairs.push([key, func]);\n }\n });\n\n // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n each(pairs, function(pair) {\n _[pair[0]] = pair[1];\n });\n\n _.convert = convertLib;\n _.placeholder = _;\n\n // Assign aliases.\n each(keys(_), function(key) {\n each(mapping.realToAlias[key] || [], function(alias) {\n _[alias] = _[key];\n });\n });\n\n return _;\n}\n\nmodule.exports = baseConvert;\n","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n // Lodash aliases.\n 'each': 'forEach',\n 'eachRight': 'forEachRight',\n 'entries': 'toPairs',\n 'entriesIn': 'toPairsIn',\n 'extend': 'assignIn',\n 'extendAll': 'assignInAll',\n 'extendAllWith': 'assignInAllWith',\n 'extendWith': 'assignInWith',\n 'first': 'head',\n\n // Methods that are curried variants of others.\n 'conforms': 'conformsTo',\n 'matches': 'isMatch',\n 'property': 'get',\n\n // Ramda aliases.\n '__': 'placeholder',\n 'F': 'stubFalse',\n 'T': 'stubTrue',\n 'all': 'every',\n 'allPass': 'overEvery',\n 'always': 'constant',\n 'any': 'some',\n 'anyPass': 'overSome',\n 'apply': 'spread',\n 'assoc': 'set',\n 'assocPath': 'set',\n 'complement': 'negate',\n 'compose': 'flowRight',\n 'contains': 'includes',\n 'dissoc': 'unset',\n 'dissocPath': 'unset',\n 'dropLast': 'dropRight',\n 'dropLastWhile': 'dropRightWhile',\n 'equals': 'isEqual',\n 'identical': 'eq',\n 'indexBy': 'keyBy',\n 'init': 'initial',\n 'invertObj': 'invert',\n 'juxt': 'over',\n 'omitAll': 'omit',\n 'nAry': 'ary',\n 'path': 'get',\n 'pathEq': 'matchesProperty',\n 'pathOr': 'getOr',\n 'paths': 'at',\n 'pickAll': 'pick',\n 'pipe': 'flow',\n 'pluck': 'map',\n 'prop': 'get',\n 'propEq': 'matchesProperty',\n 'propOr': 'getOr',\n 'props': 'at',\n 'symmetricDifference': 'xor',\n 'symmetricDifferenceBy': 'xorBy',\n 'symmetricDifferenceWith': 'xorWith',\n 'takeLast': 'takeRight',\n 'takeLastWhile': 'takeRightWhile',\n 'unapply': 'rest',\n 'unnest': 'flatten',\n 'useWith': 'overArgs',\n 'where': 'conformsTo',\n 'whereEq': 'isMatch',\n 'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n '1': [\n 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n 'uniqueId', 'words', 'zipAll'\n ],\n '2': [\n 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n 'zipObjectDeep'\n ],\n '3': [\n 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n 'xorWith', 'zipWith'\n ],\n '4': [\n 'fill', 'setWith', 'updateWith'\n ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n '2': [1, 0],\n '3': [2, 0, 1],\n '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n 'dropRightWhile': 1,\n 'dropWhile': 1,\n 'every': 1,\n 'filter': 1,\n 'find': 1,\n 'findFrom': 1,\n 'findIndex': 1,\n 'findIndexFrom': 1,\n 'findKey': 1,\n 'findLast': 1,\n 'findLastFrom': 1,\n 'findLastIndex': 1,\n 'findLastIndexFrom': 1,\n 'findLastKey': 1,\n 'flatMap': 1,\n 'flatMapDeep': 1,\n 'flatMapDepth': 1,\n 'forEach': 1,\n 'forEachRight': 1,\n 'forIn': 1,\n 'forInRight': 1,\n 'forOwn': 1,\n 'forOwnRight': 1,\n 'map': 1,\n 'mapKeys': 1,\n 'mapValues': 1,\n 'partition': 1,\n 'reduce': 2,\n 'reduceRight': 2,\n 'reject': 1,\n 'remove': 1,\n 'some': 1,\n 'takeRightWhile': 1,\n 'takeWhile': 1,\n 'times': 1,\n 'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n 'mapKeys': [1],\n 'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n 'assignInAllWith': [1, 0],\n 'assignInWith': [1, 2, 0],\n 'assignAllWith': [1, 0],\n 'assignWith': [1, 2, 0],\n 'differenceBy': [1, 2, 0],\n 'differenceWith': [1, 2, 0],\n 'getOr': [2, 1, 0],\n 'intersectionBy': [1, 2, 0],\n 'intersectionWith': [1, 2, 0],\n 'isEqualWith': [1, 2, 0],\n 'isMatchWith': [2, 1, 0],\n 'mergeAllWith': [1, 0],\n 'mergeWith': [1, 2, 0],\n 'padChars': [2, 1, 0],\n 'padCharsEnd': [2, 1, 0],\n 'padCharsStart': [2, 1, 0],\n 'pullAllBy': [2, 1, 0],\n 'pullAllWith': [2, 1, 0],\n 'rangeStep': [1, 2, 0],\n 'rangeStepRight': [1, 2, 0],\n 'setWith': [3, 1, 2, 0],\n 'sortedIndexBy': [2, 1, 0],\n 'sortedLastIndexBy': [2, 1, 0],\n 'unionBy': [1, 2, 0],\n 'unionWith': [1, 2, 0],\n 'updateWith': [3, 1, 2, 0],\n 'xorBy': [1, 2, 0],\n 'xorWith': [1, 2, 0],\n 'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n 'assignAll': { 'start': 0 },\n 'assignAllWith': { 'start': 0 },\n 'assignInAll': { 'start': 0 },\n 'assignInAllWith': { 'start': 0 },\n 'defaultsAll': { 'start': 0 },\n 'defaultsDeepAll': { 'start': 0 },\n 'invokeArgs': { 'start': 2 },\n 'invokeArgsMap': { 'start': 2 },\n 'mergeAll': { 'start': 0 },\n 'mergeAllWith': { 'start': 0 },\n 'partial': { 'start': 1 },\n 'partialRight': { 'start': 1 },\n 'without': { 'start': 1 },\n 'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n 'array': {\n 'fill': true,\n 'pull': true,\n 'pullAll': true,\n 'pullAllBy': true,\n 'pullAllWith': true,\n 'pullAt': true,\n 'remove': true,\n 'reverse': true\n },\n 'object': {\n 'assign': true,\n 'assignAll': true,\n 'assignAllWith': true,\n 'assignIn': true,\n 'assignInAll': true,\n 'assignInAllWith': true,\n 'assignInWith': true,\n 'assignWith': true,\n 'defaults': true,\n 'defaultsAll': true,\n 'defaultsDeep': true,\n 'defaultsDeepAll': true,\n 'merge': true,\n 'mergeAll': true,\n 'mergeAllWith': true,\n 'mergeWith': true,\n },\n 'set': {\n 'set': true,\n 'setWith': true,\n 'unset': true,\n 'update': true,\n 'updateWith': true\n }\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n object = exports.aliasToReal,\n result = {};\n\n for (var key in object) {\n var value = object[key];\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n 'assignAll': 'assign',\n 'assignAllWith': 'assignWith',\n 'assignInAll': 'assignIn',\n 'assignInAllWith': 'assignInWith',\n 'curryN': 'curry',\n 'curryRightN': 'curryRight',\n 'defaultsAll': 'defaults',\n 'defaultsDeepAll': 'defaultsDeep',\n 'findFrom': 'find',\n 'findIndexFrom': 'findIndex',\n 'findLastFrom': 'findLast',\n 'findLastIndexFrom': 'findLastIndex',\n 'getOr': 'get',\n 'includesFrom': 'includes',\n 'indexOfFrom': 'indexOf',\n 'invokeArgs': 'invoke',\n 'invokeArgsMap': 'invokeMap',\n 'lastIndexOfFrom': 'lastIndexOf',\n 'mergeAll': 'merge',\n 'mergeAllWith': 'mergeWith',\n 'padChars': 'pad',\n 'padCharsEnd': 'padEnd',\n 'padCharsStart': 'padStart',\n 'propertyOf': 'get',\n 'rangeStep': 'range',\n 'rangeStepRight': 'rangeRight',\n 'restFrom': 'rest',\n 'spreadFrom': 'spread',\n 'trimChars': 'trim',\n 'trimCharsEnd': 'trimEnd',\n 'trimCharsStart': 'trimStart',\n 'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n 'castArray': true,\n 'flow': true,\n 'flowRight': true,\n 'iteratee': true,\n 'mixin': true,\n 'rearg': true,\n 'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n 'add': true,\n 'assign': true,\n 'assignIn': true,\n 'bind': true,\n 'bindKey': true,\n 'concat': true,\n 'difference': true,\n 'divide': true,\n 'eq': true,\n 'gt': true,\n 'gte': true,\n 'isEqual': true,\n 'lt': true,\n 'lte': true,\n 'matchesProperty': true,\n 'merge': true,\n 'multiply': true,\n 'overArgs': true,\n 'partial': true,\n 'partialRight': true,\n 'propertyOf': true,\n 'random': true,\n 'range': true,\n 'rangeRight': true,\n 'subtract': true,\n 'zip': true,\n 'zipObject': true,\n 'zipObjectDeep': true\n};\n","module.exports = {\n 'ary': require('../ary'),\n 'assign': require('../_baseAssign'),\n 'clone': require('../clone'),\n 'curry': require('../curry'),\n 'forEach': require('../_arrayEach'),\n 'isArray': require('../isArray'),\n 'isError': require('../isError'),\n 'isFunction': require('../isFunction'),\n 'isWeakMap': require('../isWeakMap'),\n 'iteratee': require('../iteratee'),\n 'keys': require('../_baseKeys'),\n 'rearg': require('../rearg'),\n 'toInteger': require('../toInteger'),\n 'toPath': require('../toPath')\n};\n","var baseConvert = require('./_baseConvert'),\n util = require('./_util');\n\n/**\n * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied. If `name` is an object its methods\n * will be converted.\n *\n * @param {string} name The name of the function to wrap.\n * @param {Function} [func] The function to wrap.\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction convert(name, func, options) {\n return baseConvert(util, name, func, options);\n}\n\nmodule.exports = convert;\n","var convert = require('./convert'),\n func = convert('memoize', require('../memoize'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike'),\n isPlainObject = require('./isPlainObject');\n\n/** `Object#toString` result references. */\nvar domExcTag = '[object DOMException]',\n errorTag = '[object Error]';\n\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\nfunction isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n}\n\nmodule.exports = isError;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar weakMapTag = '[object WeakMap]';\n\n/**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\nfunction isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n}\n\nmodule.exports = isWeakMap;\n","var baseClone = require('./_baseClone'),\n baseIteratee = require('./_baseIteratee');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\nfunction iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n}\n\nmodule.exports = iteratee;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createWrap = require('./_createWrap'),\n flatRest = require('./_flatRest');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\nvar rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n});\n\nmodule.exports = rearg;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var arrayMap = require('./_arrayMap'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol'),\n stringToPath = require('./_stringToPath'),\n toKey = require('./_toKey'),\n toString = require('./toString');\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nmodule.exports = toPath;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n baseLodash = require('./_baseLodash'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike'),\n wrapperClone = require('./_wrapperClone');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nmodule.exports = lodash;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1217\":\"d0aeec3ee0262488070e\",\"1604\":\"6a510d4cf1bd867d5fbe\",\"3464\":\"da3f433d6dae2decd014\",\"6505\":\"6e3d238a222c70d34234\",\"6597\":\"795278daef2cde13fc91\",\"7859\":\"6845fc5b7d6a462f711e\",\"9054\":\"3e6acf6cd878c83201a9\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 3705;","// set .name for anonymous default exports per ES spec\n__webpack_require__.dn = (x) => {\n\t(Object.getOwnPropertyDescriptor(x, \"name\") || {}).writable || Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3705: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud\"] = globalThis[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(95759)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","formatDateAsYMD","date","getFullYear","getMonth","toString","padStart","getDate","service_logger","getLoggerBuilder","setApp","detectUser","build","components_AbsenceFormvue_type_script_lang_js","name","components","NcButton","A","NcTextField","NcTextArea","NcDateTimePickerNative","NcSelect","data","firstDay","lastDay","status","message","replacementUserId","replacementUserDisplayName","loadState","loading","Date","replacementUser","user","displayName","searchLoading","options","computed","valid","this","getTime","setHours","methods","resetForm","formatForMultiselect","result","uuid","value","shareWith","label","subtitle","dsc","asyncFind","query","debounceGetSuggestions","trim","getSuggestions","search","shareType","ShareType","User","request","axios","get","generateOcsUrl","params","format","itemType","error","console","ocs","exact","rawExactSuggestions","users","rawSuggestions","info","exactSuggestions","map","share","suggestions","allSuggestions","concat","nameCounts","reduce","item","desc","shareWithDisplayNameUnique","debounce","args","saveForm","post","userId","getCurrentUser","uid","showSuccess","$t","showError","logger","clearAbsence","delete","styleTagTransform","styleTagTransform_default","setAttributes","setAttributesWithoutAttributes_default","insert","insertBySelector_default","bind","domAPI","styleDomAPI_default","insertStyleElement","insertStyleElement_default","injectStylesIntoStyleTag_default","AbsenceFormvue_type_style_index_0_id_7fe2e3cc_prod_lang_scss_scoped_true","locals","component","componentNormalizer","_vm","_c","_self","staticClass","on","submit","$event","preventDefault","apply","arguments","attrs","id","required","model","callback","$$v","expression","_v","for","_s","ref","placeholder","clear-search-on-blur","scopedSlots","_u","key","fn","disabled","type","click","AbsenceForm","index_Ctj4Wyhb_options","index_Ctj4Wyhb","Binary","fromString","aString","constructor","aValue","icaltype","decodeValue","_b64_decode","setEncodedValue","_b64_encode","o1","o2","o3","h1","h2","h3","h4","bits","b64","i","ac","enc","tmp_arr","charCodeAt","charAt","length","join","r","slice","dec","indexOf","String","fromCharCode","DURATION_LETTERS","DATA_PROPS_TO_COPY","Duration","fromSeconds","aSeconds","isValueString","string","aStr","pos","dict","Object","create","chunks","numeric","Math","max","parseDurationChunk","Error","fromData","aData","wrappedJSObject","weeks","days","hours","minutes","seconds","isNegative","icalclass","clone","toSeconds","secs","abs","trunc","prop","reset","compare","aOther","thisSeconds","otherSeconds","normalize","str","hasWeeks","toICALString","letter","number","object","num","parseInt","isStrictlyNaN","Period","parts","split","start","Time","fromDateTimeString","end","duration","fromJSON","aProp","aLenient","fromDateOrDateTimeString","dateProp","TypeError","getDuration","subtractDate","getEnd","addDuration","dt","toJSON","static","daysInMonth","month","year","isLeapYear","fromDayOfYear","aDayOfYear","aYear","doy","tt","auto_normalize","is_leap","daysInYearPassedMonth","isDate","day","fromStringv2","fromDateString","strictParseInt","zone","zoneId","Timezone","utcTimezone","getParameter","parent","localTimezone","getTimeZoneByID","timeData","hour","minute","second","timezone","aProperty","fromJSDate","aDate","useUTC","aZone","now","weekOneStarts","aWeekStart","t","dow","dayOfWeek","wkst","DEFAULT_WEEK_START","THURSDAY","getDominicalLetter","yr","LTRS","dom","epochTime","_cmp_attr","a","b","attr","_time","_cachedUnixTime","_pendingNormalization","_getTimeAttr","val","_setTimeAttr","_normalize","adjust","resetTo","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getHours","getMinutes","getSeconds","entries","TimezoneService","firstDow","SUNDAY","dowCacheKey","_dowCache","q","m","Y","h","dayOfYear","startOfWeek","endOfWeek","startOfMonth","endOfMonth","startOfYear","endOfYear","startDoyWeek","aFirstDayOfWeek","delta","nthWeekDay","aDayOfWeek","aPos","weekday","otherDay","offset","isNthWeekDay","weekNumber","week1","wnCacheKey","_wnCache","isoyear","answer","aDuration","mult","unixTime","toUnixTime","utcOffset","other","subtractDateTz","compareDateOnlyTz","tz","convertToZone","rc","copy","zone_equals","tzid","convert_time","design","icalendar","toICAL","pad2","toJSDate","aExtraDays","aExtraHours","aExtraMinutes","aExtraSeconds","aTime","minutesOverflow","hoursOverflow","daysOverflow","yearsOverflow","time","fromUnixTime","ms","UTC","len","CHAR","VALUE_DELIMITER","RFC6868_REPLACE_MAP$1","parse","input","state","root","stack","_eachLine","err","line","_handleContentLine","ParserError","property","designSet","defaultSet","lastParamIndex","lastValuePos","parsedParams","valueType","valuePos","paramPos","toLowerCase","_parseParameters","parsedParamLength","accumulator","currentValue","newComponent","push","getDesignSet","pop","propertyDetails","splitName","ungroupedName","multiValue","structuredValue","propertyGroups","group","detectType","defaultType","_parseMultiValue","_parseValue","fromICAL","lcname","mvdelim","lastParam","param","multiValueSeparateDQuote","_rfc6868Escape","extendedValue","propValuePos","nextPos","length_before","delimiter","Array","isArray","replace","x","buffer","delim","innerMulti","lastPos","unescapedIndexOf","firstChar","newlineOffset","OPTIONS","_compare_change_fn","from_zone","to_zone","adjust_change","change","prototype","call","location","tznames","latitude","longitude","expandedUntilYear","changes","Component","jCal","getFirstPropertyValue","_ensureCoverage","tt_change","change_num","_findNearbyChange","change_num_to_use","step","prevUtcOffset","zone_change","tmp_change","prev_zone_change","want_daylight","is_daylight","idx","binsearchInsert","_minimumExpansionYear","today","changesEndYear","EXTRA_COVERAGE","subcomps","getAllSubcomponents","compLen","compIdx","_expandComponent","sort","aComponent","hasProperty","dtstart","getFirstProperty","getFirstValue","convert_tzoffset","factor","init_changes","changebase","props","getAllProperties","rdate","rrule","until","occ","iterator","next","zones","count","keys","utc","Z","GMT","_hard_reset","has","register","remove","isNaN","formatClassType","list","seekVal","cmpfunc","mid","cmpval","low","high","floor","aSrc","aDeep","arr","obj","foldline","aLine","line_length","cp","codePointAt","ICALmodule","foldLength","newLineChar","ceil","extend","source","target","descr","getOwnPropertyDescriptor","defineProperty","helpers","freeze","__proto__","updateTimezones","vcal","allsubs","properties","vtimezones","reqTzid","comp","removeSubcomponent","addSubcomponent","UtcOffset","instance","VCardTime","fromDateAndOrTimeString","aIcalType","part","v","s","e","tmz","splitzone","vcard","_splitZone","tm","dtlen","tmlen","hasDashDate","hasDashTime","o","super","y","d","mm","hasMonth","hasDay","hasHour","hasMinute","hasSecond","datepart","timepart","RecurIterator","BYSECOND","BYMINUTE","BYHOUR","BYDAY","BYMONTHDAY","BYYEARDAY","BYWEEKNO","BYMONTH","BYSETPOS","SECONDLY","MINUTELY","HOURLY","DAILY","WEEKLY","MONTHLY","YEARLY","completed","rule","last","occurrence_number","by_indices","initialized","by_data","days_index","Recur","init","InvalidRecurrenceRuleError","sort_byday_rules","freq","setup_defaults","ruleDayOfWeek","wkdy","dayName","numericDayToIcalDay","untilYear","expand_year_days","increment_year","interval","_nextByYearDay","next_year","has_by_data","tempLast","initLast","bydow","dayOfMonth","increment_month","_byDayAndMonthDay","normalized","normalizeByMonthDayRules","filter","next_month","again","before","invalid_count","next_second","next_minute","next_hour","next_day","next_week","check_contracting_rules","next_generic","increment_second","inc","increment_generic","increment_minute","increment_hour","this_freq","increment_monthday","end_of_data","next_weekday_by_week","week_no","rules","newRules","ruleIdx","isInit","byMonthDay","dateLen","byDay","dateIdx","dayLen","dataIsValid","self","initMonth","nextMonth","monthsCounter","dayIdx","data_valid","setpos","setpos_total","last_day","is_day_in_byday","check_set_position","coded_day","matches","match","icalDayToNumericDay","aRuleType","aInterval","aDateAttr","aFollowingAttr","aPreviousIncr","has_by_rule","dta","years","aFactor","aNextIncrement","nextunit","validWeeks","monthIdx","first_week","last_week","weekIdx","partCount","t1","t2","monthday","t3","expand_by_day","first_dow","doy_offset","last_dow","by_month_day","spIndex","month_day","bydayParts","first_matching_day","last_matching_day","expandedDays","weekno","daysInYear","Set","days_list","tmp","start_dow","end_dow","end_year_day","first","this_dow","aRules","j","check_contract_restriction","indexMapValue","_indexMap","ruleMapValue","_expandMap","pass","CONTRACT","ruleType","bydata","weekNo","req","deftime","VALID_DAY_NAMES","VALID_BYDAY_PART","DOW_MAP","SU","MO","MONDAY","TU","TUESDAY","WE","WEDNESDAY","TH","FR","FRIDAY","SA","SATURDAY","REVERSE_DOW_MAP","fromEntries","entry","reverse","ALLOWED_FREQ","_stringToData","fmtIcal","values","ucname","toUpperCase","partDesign","partArr","partSet","add","optionDesign","aStart","isFinite","isByCount","addComponent","aType","setComponent","aValues","getComponent","getNextOccurrence","aStartTime","aRecurrenceId","iter","uckey","INTERVAL","res","k","kparts","parseNumericValue","min","undefined","FREQ","COUNT","UNTIL","WKST","test","FROM_VCARD_NEWLINE","TO_VCARD_NEWLINE","createTextType","fromNewline","toNewline","structuredEscape","newline","RegExp","flags","replaceNewlineReplace","replaceNewline","regEx","DEFAULT_TYPE_TEXT","DEFAULT_TYPE_TEXT_MULTI","DEFAULT_TYPE_TEXT_STRUCTURED","DEFAULT_TYPE_INTEGER","DEFAULT_TYPE_DATETIME_DATE","allowedTypes","DEFAULT_TYPE_DATETIME","DEFAULT_TYPE_URI","DEFAULT_TYPE_UTCOFFSET","DEFAULT_TYPE_RECUR","DEFAULT_TYPE_DATE_ANDOR_TIME","commonProperties","categories","url","version","commonValues","boolean","float","parsed","parseFloat","integer","decorate","undecorate","icalValues","text","uri","binary","aBinary","strict","period","recur","aRecur","icalProperties","action","attach","attendee","calscale","class","comment","contact","created","description","dtend","dtstamp","due","exdate","exrule","freebusy","geo","method","organizer","priority","prodid","repeat","resources","sequence","summary","transp","trigger","tzoffsetfrom","tzoffsetto","tzurl","tzname","vcardValues","isFromIcal","lastChar","signChar","sign","timestamp","from","c","vcardProperties","adr","anniversary","bday","caladruri","caluri","clientpidmap","email","fburl","gender","impp","kind","lang","logo","member","n","nickname","note","org","photo","related","rev","role","sound","tel","title","xml","vcard3Values","vcard3Properties","mailer","agent","icalSet","cutype","allowXName","allowIanaToken","encoding","fbtype","partstat","range","reltype","rsvp","vcardSet","vcard3Set","vcard3","vevent","vtodo","vjournal","valarm","vtimezone","daylight","standard","componentName","LINE_ENDING","DEFAULT_VALUE_TYPE","RFC6868_REPLACE_MAP","stringify","propIdx","propLen","designSetName","comps","noFold","jsName","groupName","paramName","paramDesign","_rfc6868Unescape","paramPropertyValue","propDetails","isDefault","force","Property","_parent","getDefaultType","_updateType","p","designSetChanged","_designSet","isDecorated","isMultiValue","isStructuredValue","_hydrateValue","index","_values","_decorate","_undecorate","_setDecoratedValue","getFirstParameter","parameters","setParameter","removeParameter","details","resetType","removeAllValues","getValues","setValues","setValue","_timezoneCache","Map","_hydratedPropertyCount","_hydratedComponentCount","_components","_properties","parentDesign","versionProp","_hydrateComponent","_hydrateProperty","getFirstSubcomponent","jCalLen","_removeObjectByIndex","jCalIndex","cache","splice","_removeObject","nameOrObject","objects","cached","_removeAllObjects","nameOrComp","removed","removeAllSubcomponents","addProperty","removeProperty","addPropertyWithValue","updatePropertyWithValue","nameOrProp","removeAllProperties","hydratedZone","set","RecurExpansion","ruleDates","exDates","complete","ruleIterators","ruleDateInc","exDateInc","exDate","ruleDate","_init","_compare_special","currentTry","_nextRecurrenceIter","_nextRuleDay","_nextExDay","_extractDates","propertyName","iters","iterTime","chosenIter","iterIdx","Event","_rangeExceptionCache","exceptions","rangeExceptions","strictExceptions","forEach","relateException","isRecurrenceException","event","recurrenceId","modifiesFuture","compareRangeException","THISANDFUTURE","findRangeException","rangeItem","getOccurrenceDetails","occurrence","utcId","startDate","endDate","rangeExceptionId","exception","startDiff","original","newStart","startTime","isRecurring","getRecurrenceTypes","_firstProp","_setProp","_setTime","attendees","color","propName","debug","ComponentParser","parseEvent","parseTimezone","oncomplete","onerror","ontimezone","onevent","process","ical","esm_browser_native","randomUUID","crypto","getRandomValues","rnds8","Uint8Array","byteToHex","esm_browser_v4","buf","rnds","random","rng","RangeError","unsafeStringify","normalizeComponent","scriptExports","render2","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","render","_compiled","_scopeId","exports","CalendarAvailability","IconAdd","Plus","IconDelete","TrashCanOutline","slots","Boolean","default","l10nTo","l10nDeleteSlot","l10nEmptyDay","l10nAddSlot","l10nWeekDayListLabel","l10nMonday","l10nTuesday","l10nWednesday","l10nThursday","l10nFriday","l10nSaturday","l10nSunday","l10nStartPickerLabel","Function","l10nEndPickerLabel","internalSlots","slotsToInternalData","watch","timeStampSlotsToDateObjectSlots","slot","moToSa","sunday","dist","JN","internalDataToSlots","converted","round","addSlot","onChangeSlots","removeSlot","$emit","_l","$set","size","proxy","_e","dist_logger","logger_dist","YK","getClient","memoize","service","remote","generateRemoteUrl","client","createClient","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","components_AvailabilityFormvue_type_script_setup_true_lang_ts","_defineComponent","__name","setup","__props","getCapabilities","core","Intl","DateTimeFormat","resolvedOptions","timeZone","saving","automated","onMounted","async","slotData","response","customRequest","parseXML","availability","multistatus","propstat","vavailability","parsedIcal","vcalendarComp","vavailabilityComp","timezoneId","timezoneComp","availableComps","availableComp","startIcalDate","endIcalDate","warn","vavailabilityToSlots","findScheduleInboxAvailability","__sfc","save","predefinedTimezoneIcal","icalzone_dist","E$","deduplicated","acc","slots2","byday","slotsToVavailability","flatMap","dayId","saveScheduleInboxAvailability","appId","configKey","configValue","enableUserStatusAutomation","disableUserStatusAutomation","NcCheckboxRadioSwitch","AvailabilityFormvue_type_style_index_0_id_e0a387ae_prod_lang_scss_scoped_true_options","AvailabilityFormvue_type_style_index_0_id_e0a387ae_prod_lang_scss_scoped_true","AvailabilityForm","_setup","_setupProxy","variant","views_Availabilityvue_type_script_lang_js","NcSettingsSection","hideAbsenceSettings","Availability","Vue","translate","$mount","___CSS_LOADER_EXPORT___","_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default","module","sources","names","mappings","sourcesContent","sourceRoot","__WEBPACK_DEFAULT_EXPORT__","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default","zones_1","__webpack_require__","renderZoneSub","f","defaultStart","zoneName","includeWrapper","lines","zoneData","zonesMap","getZoneLines","baseCreate","baseLodash","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","LodashWrapper","chainAll","__chain__","__index__","__values__","array","iteratee","copyObject","keysIn","Stack","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isBuffer","isMap","isObject","isSet","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","customizer","isDeep","isFlat","isFull","isArr","tag","isFunc","stacked","subValue","arrayPush","isFlattenable","baseFlatten","depth","predicate","isStrict","castPath","toKey","path","isObjectLike","baseIsEqual","matchData","noCustomizer","objValue","srcValue","COMPARE_PARTIAL_FLAG","baseMatches","baseMatchesProperty","identity","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","baseGet","metaMap","baseSetData","func","Symbol","arrayMap","isSymbol","symbolProto","symbolToString","baseToString","stringToPath","cloneArrayBuffer","dataView","byteOffset","byteLength","reFlags","regexp","exec","lastIndex","symbolValueOf","valueOf","symbol","nativeMax","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","getSymbols","getSymbolsIn","createCtor","thisArg","isBind","Ctor","wrapper","thisBinding","createHybrid","createRecurry","getHolder","replaceHolders","arity","composeArgs","composeArgsRight","countHolders","reorder","partialsRight","holdersRight","argPos","ary","isAry","isBindKey","isFlip","holdersCount","newHolders","isLaziable","setData","setWrapToString","wrapFunc","isCurry","newData","createBind","createCurry","createPartial","getData","mergeData","toInteger","flatten","overRest","setToString","baseGetAllKeys","noop","realNames","hasOwnProperty","otherFunc","getPrototype","stubArray","getOwnPropertySymbols","reWrapDetails","reSplitDetails","isArguments","isIndex","isLength","hasFunc","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","reWrapComment","spreadableSymbol","isConcatSpreadable","reIsDeepProp","reIsPlainProp","getFuncName","lodash","funcName","clear","PLACEHOLDER","nativeMin","srcBitmask","newBitmask","isCommon","isCombo","WeakMap","indexes","arrLength","oldArray","resIndex","shortOut","getWrapDetails","insertWrapDetails","updateWrapDetails","reference","memoizeCapped","rePropName","reEscapeChar","quote","subString","arrayIncludes","wrapFlags","pair","createWrap","guard","curry","mapping","fallbackHolder","baseAry","cloneArray","wrapImmutable","cloner","baseConvert","util","isLib","isObj","config","cap","fixed","immutable","rearg","defaultHolder","forceCurry","forceFixed","forceRearg","pristine","runInContext","assign","isError","isFunction","isWeakMap","toPath","each","aryMethodKeys","aryMethod","wrappers","castArray","mixin","pairs","nthArg","context","castFixed","skipFixed","methodSpread","otherArgs","flatSpread","castRearg","skipRearg","methodRearg","aryRearg","cloneByPath","nested","createConverter","realName","aliasToReal","methodName","remap","oldOptions","newUtil","newFunc","newOptions","overArg","transform","wrap","wrapped","mutate","createCloner","aryKey","otherName","afterRearg","castCurry","iterateeRearg","baseArity","iterateeAry","castCap","convert","_","realToAlias","alias","eachRight","entriesIn","extendAll","extendAllWith","extendWith","conforms","__","F","T","all","allPass","always","any","anyPass","assoc","assocPath","complement","compose","contains","dissoc","dissocPath","dropLast","dropLastWhile","equals","identical","indexBy","invertObj","juxt","omitAll","nAry","pathEq","pathOr","paths","pickAll","pipe","pluck","propEq","propOr","symmetricDifference","symmetricDifferenceBy","symmetricDifferenceWith","takeLast","takeLastWhile","unapply","unnest","useWith","where","whereEq","zipObj","dropRightWhile","dropWhile","every","find","findFrom","findIndex","findIndexFrom","findKey","findLast","findLastFrom","findLastIndex","findLastIndexFrom","findLastKey","flatMapDeep","flatMapDepth","forEachRight","forIn","forInRight","forOwn","forOwnRight","mapKeys","mapValues","partition","reduceRight","reject","some","takeRightWhile","takeWhile","times","assignInAllWith","assignInWith","assignAllWith","assignWith","differenceBy","differenceWith","getOr","intersectionBy","intersectionWith","isEqualWith","isMatchWith","mergeAllWith","mergeWith","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","setWith","sortedIndexBy","sortedLastIndexBy","unionBy","unionWith","updateWith","xorBy","xorWith","zipWith","assignAll","assignInAll","defaultsAll","defaultsDeepAll","invokeArgs","invokeArgsMap","mergeAll","partial","partialRight","without","zipAll","fill","pull","pullAll","pullAt","assignIn","defaults","defaultsDeep","merge","unset","update","curryN","curryRightN","includesFrom","indexOfFrom","lastIndexOfFrom","propertyOf","restFrom","spreadFrom","trimChars","trimCharsEnd","trimCharsStart","flow","flowRight","bindKey","difference","divide","eq","gt","gte","isEqual","lt","lte","matchesProperty","multiply","overArgs","rangeRight","subtract","zip","zipObject","zipObjectDeep","defaultValue","baseHasIn","hasPath","baseGetTag","isPlainObject","baseIsMap","baseUnary","nodeUtil","nodeIsMap","baseIsSet","nodeIsSet","baseIteratee","MapCache","resolver","memoized","Cache","baseProperty","basePropertyDeep","flatRest","toNumber","INFINITY","toFinite","remainder","wrapperClone","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","notFulfilled","Infinity","fulfilled","getter","__esModule","definition","enumerable","chunkId","Promise","promises","u","l","done","script","needAttach","scripts","document","getElementsByTagName","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","prev","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","head","appendChild","toStringTag","nmd","children","dn","writable","configurable","scriptUrl","globalThis","importScripts","currentScript","tagName","baseURI","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"dav-settings-personal-availability.js?v=cc7894056b636f5e5143","mappings":"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AAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,qBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,SAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,WAKA,CACA,iBACA,CACAd,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,uBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,sBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,qBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA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QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,SAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,WAKA,CACA,aACA,CACAd,EAAA,CACAmqB,EAAA,QACA1V,EAAA,WAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,WAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,SAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,OACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,EACA+P,EAAA,WAKA,CACA,oBACA,CACAd,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,qBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,cACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CA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V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,aACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,YACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,WACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,UACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,UACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,WACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA57B,EAAA,QACAkmB,EAAA,MACAzU,EAAA,kBACA3Y,EAAA,CACA0J,EAAA,GACA+P,EAAA,SAGAA,EAAA,CACAqpB,EAAA,QACA57B,EAA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CACA,sBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,qBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,WAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,gBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,mBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,kBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,uBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,UAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,oBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,eACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,SAIA,CACA,iBACA,CACAzU,EAAA,CACAmqB,EAAA,QACA1V,EAAA,yBCn5MA,IAAAkW,EAAiBV,EAAQ,OACzBW,EAAiBX,EAAQ,OAYzB,SAAAY,EAAAzrC,GACAP,KAAAisC,YAAA1rC,EACAP,KAAAksC,YAAA,GACAlsC,KAAAmsC,QAAA,EACAnsC,KAAAosC,cAAA,EACApsC,KAAAqsC,cAAA,GACArsC,KAAAssC,cAfA,WAgBAtsC,KAAAusC,UAAA,EACA,CAGAP,EAAA3xB,UAAAyxB,EAAAC,EAAA1xB,WACA2xB,EAAA3xB,UAAArT,YAAAglC,EAEAtB,EAAAlI,QAAAwJ,gBC3BA,IAAAF,EAAiBV,EAAQ,OACzBW,EAAiBX,EAAQ,OASzB,SAAAoB,EAAAjsC,EAAAksC,GACAzsC,KAAAisC,YAAA1rC,EACAP,KAAAksC,YAAA,GACAlsC,KAAA0sC,YAAAD,EACAzsC,KAAA2sC,UAAA,EACA3sC,KAAA4sC,gBAAAxd,CACA,CAEAod,EAAAnyB,UAAAyxB,EAAAC,EAAA1xB,WACAmyB,EAAAnyB,UAAArT,YAAAwlC,EAEA9B,EAAAlI,QAAAgK,YCAA9B,EAAAlI,QAZA,SAAAqK,EAAAC,GAIA,IAHA,IAAAhT,GAAA,EACAxxB,EAAA,MAAAukC,EAAA,EAAAA,EAAAvkC,SAEAwxB,EAAAxxB,IACA,IAAAwkC,EAAAD,EAAA/S,GAAAA,EAAA+S,KAIA,OAAAA,CACA,YCCAnC,EAAAlI,QAXA,SAAAqK,EAAAC,GAKA,IAJA,IAAAhT,GAAA,EACAxxB,EAAA,MAAAukC,EAAA,EAAAA,EAAAvkC,OACAjI,EAAA+Y,MAAA9Q,KAEAwxB,EAAAxxB,GACAjI,EAAAy5B,GAAAgT,EAAAD,EAAA/S,GAAAA,EAAA+S,GAEA,OAAAxsC,CACA,gBClBA,IAAA0sC,EAAiB3B,EAAQ,OACzBztB,EAAWytB,EAAQ,OAenBV,EAAAlI,QAJA,SAAA72B,EAAAgU,GACA,OAAAhU,GAAAohC,EAAAptB,EAAAhC,EAAAgC,GAAAhU,EACA,gBCdA,IAAAohC,EAAiB3B,EAAQ,OACzB4B,EAAa5B,EAAQ,OAerBV,EAAAlI,QAJA,SAAA72B,EAAAgU,GACA,OAAAhU,GAAAohC,EAAAptB,EAAAqtB,EAAArtB,GAAAhU,EACA,eCdA,IAAAshC,EAAY7B,EAAQ,OACpB8B,EAAgB9B,EAAQ,OACxB+B,EAAkB/B,EAAQ,OAC1BgC,EAAiBhC,EAAQ,OACzBiC,EAAmBjC,EAAQ,OAC3BkC,EAAkBlC,EAAQ,OAC1BmC,EAAgBnC,EAAQ,OACxBoC,EAAkBpC,EAAQ,OAC1BqC,EAAoBrC,EAAQ,OAC5BsC,EAAiBtC,EAAQ,OACzBuC,EAAmBvC,EAAQ,OAC3BwC,EAAaxC,EAAQ,MACrByC,EAAqBzC,EAAQ,OAC7B0C,EAAqB1C,EAAQ,OAC7B2C,EAAsB3C,EAAQ,OAC9B/xB,EAAc+xB,EAAQ,OACtB4C,EAAe5C,EAAQ,MACvB6C,EAAY7C,EAAQ,OACpB8C,EAAe9C,EAAQ,OACvB+C,EAAY/C,EAAQ,OACpBztB,EAAWytB,EAAQ,OACnB4B,EAAa5B,EAAQ,OAQrBgD,EAAA,qBAKAC,EAAA,oBAIAC,EAAA,kBAoBAC,EAAA,GACAA,EAAAH,GAAAG,EA7BA,kBA8BAA,EAfA,wBAeAA,EAdA,qBAeAA,EA9BA,oBA8BAA,EA7BA,iBA8BAA,EAfA,yBAeAA,EAdA,yBAeAA,EAdA,sBAcAA,EAbA,uBAcAA,EAbA,uBAaAA,EA5BA,gBA6BAA,EA5BA,mBA4BAA,EAAAD,GACAC,EA3BA,mBA2BAA,EA1BA,gBA2BAA,EA1BA,mBA0BAA,EAzBA,mBA0BAA,EAhBA,uBAgBAA,EAfA,8BAgBAA,EAfA,wBAeAA,EAdA,yBAcA,EACAA,EArCA,kBAqCAA,EAAAF,GACAE,EA5BA,qBA4BA,EA8FA7D,EAAAlI,QA5EA,SAAAgM,EAAAjuC,EAAAkuC,EAAAC,EAAAroC,EAAAsF,EAAA0K,GACA,IAAAhW,EACAsuC,EAnEA,EAmEAF,EACAG,EAnEA,EAmEAH,EACAI,EAnEA,EAmEAJ,EAKA,GAHAC,IACAruC,EAAAsL,EAAA+iC,EAAAnuC,EAAA8F,EAAAsF,EAAA0K,GAAAq4B,EAAAnuC,SAEA6uB,IAAA/uB,EACA,OAAAA,EAEA,IAAA6tC,EAAA3tC,GACA,OAAAA,EAEA,IAAAuuC,EAAAz1B,EAAA9Y,GACA,GAAAuuC,GAEA,GADAzuC,EAAAwtC,EAAAttC,IACAouC,EACA,OAAApB,EAAAhtC,EAAAF,OAEI,CACJ,IAAA0uC,EAAAnB,EAAArtC,GACAyuC,EAAAD,GAAAV,GA7EA,8BA6EAU,EAEA,GAAAf,EAAAztC,GACA,OAAA+sC,EAAA/sC,EAAAouC,GAEA,GAAAI,GAAAT,GAAAS,GAAAX,GAAAY,IAAArjC,GAEA,GADAtL,EAAAuuC,GAAAI,EAAA,GAAuCjB,EAAAxtC,IACvCouC,EACA,OAAAC,EACAnB,EAAAltC,EAAA8sC,EAAAhtC,EAAAE,IACAitC,EAAAjtC,EAAA6sC,EAAA/sC,EAAAE,QAEM,CACN,IAAAguC,EAAAQ,GACA,OAAApjC,EAAApL,EAAA,GAEAF,EAAAytC,EAAAvtC,EAAAwuC,EAAAJ,EACA,CACA,CAEAt4B,IAAAA,EAAA,IAAA42B,GACA,IAAAgC,EAAA54B,EAAA9U,IAAAhB,GACA,GAAA0uC,EACA,OAAAA,EAEA54B,EAAAumB,IAAAr8B,EAAAF,GAEA8tC,EAAA5tC,GACAA,EAAAg+B,QAAA,SAAA2Q,GACA7uC,EAAA0tB,IAAAygB,EAAAU,EAAAT,EAAAC,EAAAQ,EAAA3uC,EAAA8V,GACA,GACI43B,EAAA1tC,IACJA,EAAAg+B,QAAA,SAAA2Q,EAAA7oC,GACAhG,EAAAu8B,IAAAv2B,EAAAmoC,EAAAU,EAAAT,EAAAC,EAAAroC,EAAA9F,EAAA8V,GACA,GAGA,IAIA4G,EAAA6xB,OAAA1f,GAJAyf,EACAD,EAAAjB,EAAAD,EACAkB,EAAA5B,EAAArvB,GAEApd,GASA,OARA2sC,EAAAjwB,GAAA1c,EAAA,SAAA2uC,EAAA7oC,GACA4W,IAEAiyB,EAAA3uC,EADA8F,EAAA6oC,IAIA/B,EAAA9sC,EAAAgG,EAAAmoC,EAAAU,EAAAT,EAAAC,EAAAroC,EAAA9F,EAAA8V,GACA,GACAhW,CACA,gBCnKA,IAAA8uC,EAAgB/D,EAAQ,OACxBgE,EAAoBhE,EAAQ,OAoC5BV,EAAAlI,QAvBA,SAAA6M,EAAAxC,EAAAyC,EAAAC,EAAAC,EAAAnvC,GACA,IAAAy5B,GAAA,EACAxxB,EAAAukC,EAAAvkC,OAKA,IAHAinC,IAAAA,EAAAH,GACA/uC,IAAAA,EAAA,MAEAy5B,EAAAxxB,GAAA,CACA,IAAA/H,EAAAssC,EAAA/S,GACAwV,EAAA,GAAAC,EAAAhvC,GACA+uC,EAAA,EAEAD,EAAA9uC,EAAA+uC,EAAA,EAAAC,EAAAC,EAAAnvC,GAEA8uC,EAAA9uC,EAAAE,GAEMivC,IACNnvC,EAAAA,EAAAiI,QAAA/H,EAEA,CACA,OAAAF,CACA,gBCnCA,IAAAovC,EAAerE,EAAQ,OACvBsE,EAAYtE,EAAQ,OAsBpBV,EAAAlI,QAZA,SAAA72B,EAAAgkC,GAMA,IAHA,IAAA7V,EAAA,EACAxxB,GAHAqnC,EAAAF,EAAAE,EAAAhkC,IAGArD,OAEA,MAAAqD,GAAAmuB,EAAAxxB,GACAqD,EAAAA,EAAA+jC,EAAAC,EAAA7V,OAEA,OAAAA,GAAAA,GAAAxxB,EAAAqD,OAAAyjB,CACA,YCTAsb,EAAAlI,QAJA,SAAA72B,EAAAtF,GACA,aAAAsF,GAAAtF,KAAAmD,OAAAmC,EACA,gBCVA,IAAAiiC,EAAaxC,EAAQ,MACrBwE,EAAmBxE,EAAQ,OAgB3BV,EAAAlI,QAJA,SAAAjiC,GACA,OAAAqvC,EAAArvC,IAVA,gBAUAqtC,EAAArtC,EACA,gBCfA,IAAA0sC,EAAY7B,EAAQ,OACpByE,EAAkBzE,EAAQ,OA4D1BV,EAAAlI,QA5CA,SAAA72B,EAAAgU,EAAAmwB,EAAApB,GACA,IAAA5U,EAAAgW,EAAAxnC,OACAA,EAAAwxB,EACAiW,GAAArB,EAEA,SAAA/iC,EACA,OAAArD,EAGA,IADAqD,EAAAnC,OAAAmC,GACAmuB,KAAA,CACA,IAAA96B,EAAA8wC,EAAAhW,GACA,GAAAiW,GAAA/wC,EAAA,GACAA,EAAA,KAAA2M,EAAA3M,EAAA,MACAA,EAAA,KAAA2M,GAEA,QAEA,CACA,OAAAmuB,EAAAxxB,GAAA,CAEA,IAAAjC,GADArH,EAAA8wC,EAAAhW,IACA,GACAkW,EAAArkC,EAAAtF,GACA4pC,EAAAjxC,EAAA,GAEA,GAAA+wC,GAAA/wC,EAAA,IACA,QAAAowB,IAAA4gB,KAAA3pC,KAAAsF,GACA,aAEM,CACN,IAAA0K,EAAA,IAAA42B,EACA,GAAAyB,EACA,IAAAruC,EAAAquC,EAAAsB,EAAAC,EAAA5pC,EAAAsF,EAAAgU,EAAAtJ,GAEA,UAAA+Y,IAAA/uB,EACAwvC,EAAAI,EAAAD,EAAAE,EAAAxB,EAAAr4B,GACAhW,GAEA,QAEA,CACA,CACA,QACA,gBC3DA,IAAAutC,EAAaxC,EAAQ,MACrBwE,EAAmBxE,EAAQ,OAgB3BV,EAAAlI,QAJA,SAAAjiC,GACA,OAAAqvC,EAAArvC,IAVA,gBAUAqtC,EAAArtC,EACA,gBCfA,IAAA4vC,EAAkB/E,EAAQ,OAC1BgF,EAA0BhF,EAAQ,OAClCiF,EAAejF,EAAQ,OACvB/xB,EAAc+xB,EAAQ,OACtBz0B,EAAey0B,EAAQ,OA0BvBV,EAAAlI,QAjBA,SAAAjiC,GAGA,yBAAAA,EACAA,EAEA,MAAAA,EACA8vC,EAEA,iBAAA9vC,EACA8Y,EAAA9Y,GACA6vC,EAAA7vC,EAAA,GAAAA,EAAA,IACA4vC,EAAA5vC,GAEAoW,EAAApW,EACA,YCnBAmqC,EAAAlI,QAJA,WAEA,gBCPA,IAAA8N,EAAkBlF,EAAQ,OAC1BmF,EAAmBnF,EAAQ,OAC3BoF,EAA8BpF,EAAQ,OAmBtCV,EAAAlI,QAVA,SAAA7iB,GACA,IAAAmwB,EAAAS,EAAA5wB,GACA,UAAAmwB,EAAAxnC,QAAAwnC,EAAA,MACAU,EAAAV,EAAA,MAAAA,EAAA,OAEA,SAAAnkC,GACA,OAAAA,IAAAgU,GAAA2wB,EAAA3kC,EAAAgU,EAAAmwB,EACA,CACA,gBCnBA,IAAAD,EAAkBzE,EAAQ,OAC1B7pC,EAAU6pC,EAAQ,OAClBqF,EAAYrF,EAAQ,OACpBsF,EAAYtF,EAAQ,OACpBuF,EAAyBvF,EAAQ,OACjCoF,EAA8BpF,EAAQ,OACtCsE,EAAYtE,EAAQ,OA0BpBV,EAAAlI,QAZA,SAAAmN,EAAAM,GACA,OAAAS,EAAAf,IAAAgB,EAAAV,GACAO,EAAAd,EAAAC,GAAAM,GAEA,SAAAtkC,GACA,IAAAqkC,EAAAzuC,EAAAoK,EAAAgkC,GACA,YAAAvgB,IAAA4gB,GAAAA,IAAAC,EACAQ,EAAA9kC,EAAAgkC,GACAE,EAAAI,EAAAD,EAAAE,EACA,CACA,YCjBAxF,EAAAlI,QANA,SAAAn8B,GACA,gBAAAsF,GACA,aAAAA,OAAAyjB,EAAAzjB,EAAAtF,EACA,CACA,gBCXA,IAAAuqC,EAAcxF,EAAQ,OAetBV,EAAAlI,QANA,SAAAmN,GACA,gBAAAhkC,GACA,OAAAilC,EAAAjlC,EAAAgkC,EACA,CACA,gBCbA,IAAAU,EAAejF,EAAQ,OACvByF,EAAczF,EAAQ,OAUtB0F,EAAAD,EAAA,SAAAE,EAAA/xC,GAEA,OADA6xC,EAAAjU,IAAAmU,EAAA/xC,GACA+xC,CACA,EAHAV,EAKA3F,EAAAlI,QAAAsO,gBChBA,IAAAE,EAAa5F,EAAQ,OACrB6F,EAAe7F,EAAQ,OACvB/xB,EAAc+xB,EAAQ,OACtB8F,EAAe9F,EAAQ,OAMvB+F,EAAAH,EAAAA,EAAA32B,eAAA+U,EACAgiB,EAAAD,EAAAA,EAAAzzC,cAAA0xB,EA0BAsb,EAAAlI,QAhBA,SAAA6O,EAAA9wC,GAEA,oBAAAA,EACA,OAAAA,EAEA,GAAA8Y,EAAA9Y,GAEA,OAAA0wC,EAAA1wC,EAAA8wC,GAAA,GAEA,GAAAH,EAAA3wC,GACA,OAAA6wC,EAAAA,EAAA92B,KAAA/Z,GAAA,GAEA,IAAAF,EAAAE,EAAA,GACA,WAAAF,GAAA,EAAAE,IAAA,SAAAF,CACA,gBClCA,IAAAgZ,EAAc+xB,EAAQ,OACtBsF,EAAYtF,EAAQ,OACpBkG,EAAmBlG,EAAQ,OAC3B1tC,EAAe0tC,EAAQ,OAiBvBV,EAAAlI,QAPA,SAAAjiC,EAAAoL,GACA,OAAA0N,EAAA9Y,GACAA,EAEAmwC,EAAAnwC,EAAAoL,GAAA,CAAApL,GAAA+wC,EAAA5zC,EAAA6C,GACA,gBClBA,IAAAgxC,EAAuBnG,EAAQ,OAe/BV,EAAAlI,QALA,SAAAgP,EAAA7C,GACA,IAAAn1B,EAAAm1B,EAAA4C,EAAAC,EAAAh4B,QAAAg4B,EAAAh4B,OACA,WAAAg4B,EAAAxqC,YAAAwS,EAAAg4B,EAAAC,WAAAD,EAAAE,WACA,YCZA,IAAAC,EAAA,OAeAjH,EAAAlI,QANA,SAAAoP,GACA,IAAAvxC,EAAA,IAAAuxC,EAAA5qC,YAAA4qC,EAAAjyB,OAAAgyB,EAAAE,KAAAD,IAEA,OADAvxC,EAAAyxC,UAAAF,EAAAE,UACAzxC,CACA,gBCdA,IAAA2wC,EAAa5F,EAAQ,OAGrB+F,EAAAH,EAAAA,EAAA32B,eAAA+U,EACA2iB,EAAAZ,EAAAA,EAAAa,aAAA5iB,EAaAsb,EAAAlI,QAJA,SAAAyP,GACA,OAAAF,EAAAvoC,OAAAuoC,EAAAz3B,KAAA23B,IAAA,EACA,YCdA,IAAAC,EAAAtoC,KAAAC,IAqCA6gC,EAAAlI,QAxBA,SAAAx/B,EAAAmvC,EAAAC,EAAAC,GAUA,IATA,IAAAC,GAAA,EACAC,EAAAvvC,EAAAsF,OACAkqC,EAAAJ,EAAA9pC,OACAmqC,GAAA,EACAC,EAAAP,EAAA7pC,OACAqqC,EAAAT,EAAAK,EAAAC,EAAA,GACAnyC,EAAA+Y,MAAAs5B,EAAAC,GACAC,GAAAP,IAEAI,EAAAC,GACAryC,EAAAoyC,GAAAN,EAAAM,GAEA,OAAAH,EAAAE,IACAI,GAAAN,EAAAC,KACAlyC,EAAA+xC,EAAAE,IAAAtvC,EAAAsvC,IAGA,KAAAK,KACAtyC,EAAAoyC,KAAAzvC,EAAAsvC,KAEA,OAAAjyC,CACA,YCnCA,IAAA6xC,EAAAtoC,KAAAC,IAuCA6gC,EAAAlI,QA1BA,SAAAx/B,EAAAmvC,EAAAC,EAAAC,GAWA,IAVA,IAAAC,GAAA,EACAC,EAAAvvC,EAAAsF,OACAuqC,GAAA,EACAL,EAAAJ,EAAA9pC,OACAwqC,GAAA,EACAC,EAAAZ,EAAA7pC,OACAqqC,EAAAT,EAAAK,EAAAC,EAAA,GACAnyC,EAAA+Y,MAAAu5B,EAAAI,GACAH,GAAAP,IAEAC,EAAAK,GACAtyC,EAAAiyC,GAAAtvC,EAAAsvC,GAGA,IADA,IAAAl/B,EAAAk/B,IACAQ,EAAAC,GACA1yC,EAAA+S,EAAA0/B,GAAAX,EAAAW,GAEA,OAAAD,EAAAL,IACAI,GAAAN,EAAAC,KACAlyC,EAAA+S,EAAAg/B,EAAAS,IAAA7vC,EAAAsvC,MAGA,OAAAjyC,CACA,gBCtCA,IAAA0sC,EAAiB3B,EAAQ,OACzB4H,EAAiB5H,EAAQ,MAczBV,EAAAlI,QAJA,SAAA7iB,EAAAhU,GACA,OAAAohC,EAAAptB,EAAAqzB,EAAArzB,GAAAhU,EACA,gBCbA,IAAAohC,EAAiB3B,EAAQ,OACzB6H,EAAmB7H,EAAQ,OAc3BV,EAAAlI,QAJA,SAAA7iB,EAAAhU,GACA,OAAAohC,EAAAptB,EAAAszB,EAAAtzB,GAAAhU,EACA,YCOA++B,EAAAlI,QAZA,SAAAqK,EAAA5mC,GAIA,IAHA,IAAAqC,EAAAukC,EAAAvkC,OACAjI,EAAA,EAEAiI,KACAukC,EAAAvkC,KAAArC,KACA5F,EAGA,OAAAA,CACA,gBClBA,IAAA6yC,EAAiB9H,EAAQ,OACzBh1B,EAAWg1B,EAAQ,MA0BnBV,EAAAlI,QAXA,SAAAuO,EAAAtC,EAAA0E,GACA,IAAAC,EAbA,EAaA3E,EACA4E,EAAAH,EAAAnC,GAMA,OAJA,SAAAuC,IAEA,OADAtzC,MAAAA,OAAAoW,GAAApW,gBAAAszC,EAAAD,EAAAtC,GACA3rC,MAAAguC,EAAAD,EAAAnzC,KAAAqF,UACA,CAEA,gBCzBA,IAAAymC,EAAiBV,EAAQ,OACzB8C,EAAe9C,EAAQ,OAmCvBV,EAAAlI,QAzBA,SAAA6Q,GACA,kBAIA,IAAArwC,EAAAqC,UACA,OAAArC,EAAAsF,QACA,kBAAA+qC,EACA,kBAAAA,EAAArwC,EAAA,IACA,kBAAAqwC,EAAArwC,EAAA,GAAAA,EAAA,IACA,kBAAAqwC,EAAArwC,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,kBAAAqwC,EAAArwC,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,kBAAAqwC,EAAArwC,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,kBAAAqwC,EAAArwC,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,kBAAAqwC,EAAArwC,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAEA,IAAAuwC,EAAAzH,EAAAuH,EAAAh5B,WACAha,EAAAgzC,EAAAjuC,MAAAmuC,EAAAvwC,GAIA,OAAAkrC,EAAA7tC,GAAAA,EAAAkzC,CACA,CACA,gBClCA,IAAAnuC,EAAYgmC,EAAQ,OACpB8H,EAAiB9H,EAAQ,OACzBoI,EAAmBpI,EAAQ,OAC3BqI,EAAoBrI,EAAQ,OAC5BsI,EAAgBtI,EAAQ,OACxBuI,EAAqBvI,EAAQ,OAC7Bh1B,EAAWg1B,EAAQ,MAuCnBV,EAAAlI,QA5BA,SAAAuO,EAAAtC,EAAAmF,GACA,IAAAP,EAAAH,EAAAnC,GAwBA,OAtBA,SAAAuC,IAMA,IALA,IAAAhrC,EAAAjD,UAAAiD,OACAtF,EAAAoW,MAAA9Q,GACAwxB,EAAAxxB,EACArC,EAAAytC,EAAAJ,GAEAxZ,KACA92B,EAAA82B,GAAAz0B,UAAAy0B,GAEA,IAAAsY,EAAA9pC,EAAA,GAAAtF,EAAA,KAAAiD,GAAAjD,EAAAsF,EAAA,KAAArC,EACA,GACA0tC,EAAA3wC,EAAAiD,GAGA,OADAqC,GAAA8pC,EAAA9pC,QACAsrC,EACAH,EACA1C,EAAAtC,EAAA+E,EAAAF,EAAArtC,iBAAAmpB,EACApsB,EAAAovC,OAAAhjB,OAAAA,EAAAwkB,EAAAtrC,GAGAlD,EADApF,MAAAA,OAAAoW,GAAApW,gBAAAszC,EAAAD,EAAAtC,EACA/wC,KAAAgD,EACA,CAEA,gBC3CA,IAAA6wC,EAAkBzI,EAAQ,OAC1B0I,EAAuB1I,EAAQ,OAC/B2I,EAAmB3I,EAAQ,OAC3B8H,EAAiB9H,EAAQ,OACzBqI,EAAoBrI,EAAQ,OAC5BsI,EAAgBtI,EAAQ,OACxB4I,EAAc5I,EAAQ,OACtBuI,EAAqBvI,EAAQ,OAC7Bh1B,EAAWg1B,EAAQ,MAmFnBV,EAAAlI,QAtDA,SAAAgR,EAAAzC,EAAAtC,EAAA0E,EAAAhB,EAAAC,EAAA6B,EAAAC,EAAAC,EAAAC,EAAAR,GACA,IAAAS,EAvBA,IAuBA5F,EACA2E,EA5BA,EA4BA3E,EACA6F,EA5BA,EA4BA7F,EACA4D,EAAA,GAAA5D,EACA8F,EA1BA,IA0BA9F,EACA4E,EAAAiB,OAAAllB,EAAA8jB,EAAAnC,GA6CA,OA3CA,SAAAuC,IAKA,IAJA,IAAAhrC,EAAAjD,UAAAiD,OACAtF,EAAAoW,MAAA9Q,GACAwxB,EAAAxxB,EAEAwxB,KACA92B,EAAA82B,GAAAz0B,UAAAy0B,GAEA,GAAAuY,EACA,IAAApsC,EAAAytC,EAAAJ,GACAkB,EAAAT,EAAA/wC,EAAAiD,GASA,GAPAksC,IACAnvC,EAAA6wC,EAAA7wC,EAAAmvC,EAAAC,EAAAC,IAEA4B,IACAjxC,EAAA8wC,EAAA9wC,EAAAixC,EAAAC,EAAA7B,IAEA/pC,GAAAksC,EACAnC,GAAA/pC,EAAAsrC,EAAA,CACA,IAAAa,EAAAd,EAAA3wC,EAAAiD,GACA,OAAAwtC,EACA1C,EAAAtC,EAAA+E,EAAAF,EAAArtC,YAAAktC,EACAnwC,EAAAyxC,EAAAN,EAAAC,EAAAR,EAAAtrC,EAEA,CACA,IAAAirC,EAAAH,EAAAD,EAAAnzC,KACAsG,EAAAguC,EAAAf,EAAAxC,GAAAA,EAcA,OAZAzoC,EAAAtF,EAAAsF,OACA6rC,EACAnxC,EAAAgxC,EAAAhxC,EAAAmxC,GACMI,GAAAjsC,EAAA,GACNtF,EAAAqqB,UAEAgnB,GAAAD,EAAA9rC,IACAtF,EAAAsF,OAAA8rC,GAEAp0C,MAAAA,OAAAoW,GAAApW,gBAAAszC,IACAhtC,EAAA+sC,GAAAH,EAAA5sC,IAEAA,EAAAlB,MAAAmuC,EAAAvwC,EACA,CAEA,gBCzFA,IAAAoC,EAAYgmC,EAAQ,OACpB8H,EAAiB9H,EAAQ,OACzBh1B,EAAWg1B,EAAQ,MAwCnBV,EAAAlI,QAvBA,SAAAuO,EAAAtC,EAAA0E,EAAAhB,GACA,IAAAiB,EAfA,EAeA3E,EACA4E,EAAAH,EAAAnC,GAkBA,OAhBA,SAAAuC,IAQA,IAPA,IAAAhB,GAAA,EACAC,EAAAltC,UAAAiD,OACAmqC,GAAA,EACAC,EAAAP,EAAA7pC,OACAtF,EAAAoW,MAAAs5B,EAAAH,GACAjsC,EAAAtG,MAAAA,OAAAoW,GAAApW,gBAAAszC,EAAAD,EAAAtC,IAEA0B,EAAAC,GACA1vC,EAAAyvC,GAAAN,EAAAM,GAEA,KAAAF,KACAvvC,EAAAyvC,KAAAptC,YAAAitC,GAEA,OAAAltC,EAAAkB,EAAA8sC,EAAAD,EAAAnzC,KAAAgD,EACA,CAEA,gBCxCA,IAAA0xC,EAAiBtJ,EAAQ,OACzBuJ,EAAcvJ,EAAQ,OACtBwJ,EAAsBxJ,EAAQ,OAqD9BV,EAAAlI,QA1BA,SAAAuO,EAAAtC,EAAAoG,EAAA5uC,EAAAktC,EAAAhB,EAAAC,EAAA+B,EAAAC,EAAAR,GACA,IAAAkB,EAtBA,EAsBArG,EAMAA,GAAAqG,EA3BA,GACA,GAHA,GA8BArG,KAAAqG,EA3BA,GADA,OA+BArG,IAAA,GAEA,IAAAsG,EAAA,CACAhE,EAAAtC,EAAA0E,EAVA2B,EAAA3C,OAAA/iB,EAFA0lB,EAAA1C,OAAAhjB,EAGA0lB,OAAA1lB,EAAA+iB,EAFA2C,OAAA1lB,EAAAgjB,EAYA+B,EAAAC,EAAAR,GAGAvzC,EAAAw0C,EAAAzvC,WAAAgqB,EAAA2lB,GAKA,OAJAL,EAAA3D,IACA4D,EAAAt0C,EAAA00C,GAEA10C,EAAA4F,YAAAA,EACA2uC,EAAAv0C,EAAA0wC,EAAAtC,EACA,gBCrDA,IAAAqC,EAAkB1F,EAAQ,OAC1B4J,EAAiB5J,EAAQ,OACzB6J,EAAkB7J,EAAQ,OAC1BoI,EAAmBpI,EAAQ,OAC3B8J,EAAoB9J,EAAQ,OAC5B+J,EAAc/J,EAAQ,OACtBgK,EAAgBhK,EAAQ,MACxBuJ,EAAcvJ,EAAQ,OACtBwJ,EAAsBxJ,EAAQ,OAC9BiK,EAAgBjK,EAAQ,OAcxB8G,EAAAtoC,KAAAC,IAkFA6gC,EAAAlI,QAvDA,SAAAuO,EAAAtC,EAAA0E,EAAAhB,EAAAC,EAAA+B,EAAAC,EAAAR,GACA,IAAAU,EAnCA,EAmCA7F,EACA,IAAA6F,GAAA,mBAAAvD,EACA,UAAAnkC,UAzCA,uBA2CA,IAAAtE,EAAA6pC,EAAAA,EAAA7pC,OAAA,EASA,GARAA,IACAmmC,IAAA,GACA0D,EAAAC,OAAAhjB,GAEAglB,OAAAhlB,IAAAglB,EAAAA,EAAAlC,EAAAmD,EAAAjB,GAAA,GACAR,OAAAxkB,IAAAwkB,EAAAA,EAAAyB,EAAAzB,GACAtrC,GAAA8pC,EAAAA,EAAA9pC,OAAA,EA1CA,GA4CAmmC,EAAA,CACA,IAAAwF,EAAA9B,EACA+B,EAAA9B,EAEAD,EAAAC,OAAAhjB,CACA,CACA,IAAApwB,EAAAs1C,OAAAllB,EAAA+lB,EAAApE,GAEAgE,EAAA,CACAhE,EAAAtC,EAAA0E,EAAAhB,EAAAC,EAAA6B,EAAAC,EACAC,EAAAC,EAAAR,GAkBA,GAfA50C,GACAo2C,EAAAL,EAAA/1C,GAEA+xC,EAAAgE,EAAA,GACAtG,EAAAsG,EAAA,GACA5B,EAAA4B,EAAA,GACA5C,EAAA4C,EAAA,GACA3C,EAAA2C,EAAA,KACAnB,EAAAmB,EAAA,QAAA3lB,IAAA2lB,EAAA,GACAT,EAAA,EAAAvD,EAAAzoC,OACA4pC,EAAA6C,EAAA,GAAAzsC,EAAA,KAEA,GAAAmmC,IACAA,IAAA,IAEAA,GA7EA,GA6EAA,EAGApuC,EA9EA,GA6EIouC,GA5EJ,IA4EIA,EACJwG,EAAAlE,EAAAtC,EAAAmF,GA5EA,IA6EInF,GAAA,IAAAA,GAAA2D,EAAA9pC,OAGJkrC,EAAApuC,WAAAgqB,EAAA2lB,GAFAG,EAAAnE,EAAAtC,EAAA0E,EAAAhB,QAJA,IAAA9xC,EAAA20C,EAAAjE,EAAAtC,EAAA0E,GASA,OAAAyB,GADA51C,EAAA8xC,EAAA6D,GACAt0C,EAAA00C,GAAAhE,EAAAtC,EACA,gBCvGA,IAAA6G,EAAclK,EAAQ,OACtBmK,EAAenK,EAAQ,OACvBoK,EAAkBpK,EAAQ,OAa1BV,EAAAlI,QAJA,SAAAuO,GACA,OAAAyE,EAAAD,EAAAxE,OAAA3hB,EAAAkmB,GAAAvE,EAAA,GACA,gBCbA,IAAA0E,EAAqBrK,EAAQ,OAC7B6H,EAAmB7H,EAAQ,OAC3B4B,EAAa5B,EAAQ,OAcrBV,EAAAlI,QAJA,SAAA72B,GACA,OAAA8pC,EAAA9pC,EAAAqhC,EAAAiG,EACA,gBCdA,IAAApC,EAAczF,EAAQ,OACtBsK,EAAWtK,EAAQ,OASnB+J,EAAAtE,EAAA,SAAAE,GACA,OAAAF,EAAAtvC,IAAAwvC,EACA,EAFA2E,EAIAhL,EAAAlI,QAAA2S,gBCdA,IAAAQ,EAAgBvK,EAAQ,OAMxBwK,EAHApsC,OAAA6Q,UAGAu7B,eAwBAlL,EAAAlI,QAfA,SAAAuO,GAKA,IAJA,IAAA1wC,EAAA0wC,EAAAvyC,KAAA,GACAquC,EAAA8I,EAAAt1C,GACAiI,EAAAstC,EAAAt7B,KAAAq7B,EAAAt1C,GAAAwsC,EAAAvkC,OAAA,EAEAA,KAAA,CACA,IAAAtJ,EAAA6tC,EAAAvkC,GACAutC,EAAA72C,EAAA+xC,KACA,SAAA8E,GAAAA,GAAA9E,EACA,OAAA/xC,EAAAR,IAEA,CACA,OAAA6B,CACA,YChBAqqC,EAAAlI,QALA,SAAAuO,GAEA,OADAA,EACA9qC,WACA,gBCVA,IAAA0qC,EAAyBvF,EAAQ,OACjCztB,EAAWytB,EAAQ,OAsBnBV,EAAAlI,QAbA,SAAA72B,GAIA,IAHA,IAAAtL,EAAAsd,EAAAhS,GACArD,EAAAjI,EAAAiI,OAEAA,KAAA,CACA,IAAAjC,EAAAhG,EAAAiI,GACA/H,EAAAoL,EAAAtF,GAEAhG,EAAAiI,GAAA,CAAAjC,EAAA9F,EAAAowC,EAAApwC,GACA,CACA,OAAAF,CACA,gBCrBA,IAAA8uC,EAAgB/D,EAAQ,OACxB0K,EAAmB1K,EAAQ,OAC3B4H,EAAiB5H,EAAQ,MACzB2K,EAAgB3K,EAAQ,OAYxB6H,EATAzpC,OAAAwsC,sBASA,SAAArqC,GAEA,IADA,IAAAtL,EAAA,GACAsL,GACAwjC,EAAA9uC,EAAA2yC,EAAArnC,IACAA,EAAAmqC,EAAAnqC,GAEA,OAAAtL,CACA,EAPA01C,EASArL,EAAAlI,QAAAyQ,YCvBA,IAAAgD,EAAA,oCACAC,EAAA,QAcAxL,EAAAlI,QALA,SAAA7iB,GACA,IAAA8I,EAAA9I,EAAA8I,MAAAwtB,GACA,OAAAxtB,EAAAA,EAAA,GAAAxc,MAAAiqC,GAAA,EACA,gBCdA,IAAAzG,EAAerE,EAAQ,OACvB+K,EAAkB/K,EAAQ,OAC1B/xB,EAAc+xB,EAAQ,OACtBgL,EAAchL,EAAQ,OACtBiL,EAAejL,EAAQ,OACvBsE,EAAYtE,EAAQ,OAiCpBV,EAAAlI,QAtBA,SAAA72B,EAAAgkC,EAAA2G,GAOA,IAJA,IAAAxc,GAAA,EACAxxB,GAHAqnC,EAAAF,EAAAE,EAAAhkC,IAGArD,OACAjI,GAAA,IAEAy5B,EAAAxxB,GAAA,CACA,IAAAjC,EAAAqpC,EAAAC,EAAA7V,IACA,KAAAz5B,EAAA,MAAAsL,GAAA2qC,EAAA3qC,EAAAtF,IACA,MAEAsF,EAAAA,EAAAtF,EACA,CACA,OAAAhG,KAAAy5B,GAAAxxB,EACAjI,KAEAiI,EAAA,MAAAqD,EAAA,EAAAA,EAAArD,SACA+tC,EAAA/tC,IAAA8tC,EAAA/vC,EAAAiC,KACA+Q,EAAA1N,IAAAwqC,EAAAxqC,GACA,YCnCA,IAGAiqC,EAHApsC,OAAA6Q,UAGAu7B,eAqBAlL,EAAAlI,QAZA,SAAAqK,GACA,IAAAvkC,EAAAukC,EAAAvkC,OACAjI,EAAA,IAAAwsC,EAAA7lC,YAAAsB,GAOA,OAJAA,GAAA,iBAAAukC,EAAA,IAAA+I,EAAAt7B,KAAAuyB,EAAA,WACAxsC,EAAAy5B,MAAA+S,EAAA/S,MACAz5B,EAAA6V,MAAA22B,EAAA32B,OAEA7V,CACA,gBCvBA,IAAAkxC,EAAuBnG,EAAQ,OAC/BmL,EAAoBnL,EAAQ,OAC5BoL,EAAkBpL,EAAQ,OAC1BqL,EAAkBrL,EAAQ,OAC1BsL,EAAsBtL,EAAQ,OAwE9BV,EAAAlI,QApCA,SAAA72B,EAAAojC,EAAAJ,GACA,IAAA0E,EAAA1nC,EAAA3E,YACA,OAAA+nC,GACA,IA3BA,uBA4BA,OAAAwC,EAAA5lC,GAEA,IAvCA,mBAwCA,IAvCA,gBAwCA,WAAA0nC,GAAA1nC,GAEA,IAjCA,oBAkCA,OAAA4qC,EAAA5qC,EAAAgjC,GAEA,IAnCA,wBAmCA,IAlCA,wBAmCA,IAlCA,qBAkCA,IAjCA,sBAiCA,IAhCA,sBAiCA,IAhCA,sBAgCA,IA/BA,6BA+BA,IA9BA,uBA8BA,IA7BA,uBA8BA,OAAA+H,EAAA/qC,EAAAgjC,GAEA,IAjDA,eA2DA,IAxDA,eAyDA,WAAA0E,EARA,IAnDA,kBAoDA,IAjDA,kBAkDA,WAAAA,EAAA1nC,GAEA,IAtDA,kBAuDA,OAAA6qC,EAAA7qC,GAKA,IAzDA,kBA0DA,OAAA8qC,EAAA9qC,GAEA,YCzEA,IAAAgrC,EAAA,4CAqBAjM,EAAAlI,QAXA,SAAA7iB,EAAA4a,GACA,IAAAjyB,EAAAiyB,EAAAjyB,OACA,IAAAA,EACA,OAAAqX,EAEA,IAAAmyB,EAAAxpC,EAAA,EAGA,OAFAiyB,EAAAuX,IAAAxpC,EAAA,WAAAiyB,EAAAuX,GACAvX,EAAAA,EAAAhyB,KAAAD,EAAA,YACAqX,EAAArG,QAAAq9B,EAAA,uBAAyCpc,EAAA,SACzC,gBCpBA,IAAAyW,EAAa5F,EAAQ,OACrB+K,EAAkB/K,EAAQ,OAC1B/xB,EAAc+xB,EAAQ,OAGtBwL,EAAA5F,EAAAA,EAAA6F,wBAAAznB,EAcAsb,EAAAlI,QALA,SAAAjiC,GACA,OAAA8Y,EAAA9Y,IAAA41C,EAAA51C,OACAq2C,GAAAr2C,GAAAA,EAAAq2C,GACA,gBCjBA,IAAAv9B,EAAc+xB,EAAQ,OACtB8F,EAAe9F,EAAQ,OAGvB0L,EAAA,mDACAC,EAAA,QAuBArM,EAAAlI,QAbA,SAAAjiC,EAAAoL,GACA,GAAA0N,EAAA9Y,GACA,SAEA,IAAAiG,SAAAjG,EACA,kBAAAiG,GAAA,UAAAA,GAAA,WAAAA,GACA,MAAAjG,IAAA2wC,EAAA3wC,KAGAw2C,EAAAtnB,KAAAlvB,KAAAu2C,EAAArnB,KAAAlvB,IACA,MAAAoL,GAAApL,KAAAiJ,OAAAmC,EACA,gBC1BA,IAAAqgC,EAAkBZ,EAAQ,OAC1B+J,EAAc/J,EAAQ,OACtB4L,EAAkB5L,EAAQ,OAC1B6L,EAAa7L,EAAQ,OAwBrBV,EAAAlI,QAdA,SAAAuO,GACA,IAAAmG,EAAAF,EAAAjG,GACA98B,EAAAgjC,EAAAC,GAEA,sBAAAjjC,KAAAijC,KAAAlL,EAAA3xB,WACA,SAEA,GAAA02B,IAAA98B,EACA,SAEA,IAAAjV,EAAAm2C,EAAAlhC,GACA,QAAAjV,GAAA+xC,IAAA/xC,EAAA,EACA,gBCzBA,IAAAkvC,EAAe9C,EAAQ,OAcvBV,EAAAlI,QAJA,SAAAjiC,GACA,OAAAA,GAAAA,IAAA2tC,EAAA3tC,EACA,YCOAmqC,EAAAlI,QAVA,SAAAn8B,EAAA4pC,GACA,gBAAAtkC,GACA,aAAAA,GAGAA,EAAAtF,KAAA4pC,SACA7gB,IAAA6gB,GAAA5pC,KAAAmD,OAAAmC,GACA,CACA,gBCjBA,IAAA85B,EAAc2F,EAAQ,OAyBtBV,EAAAlI,QAZA,SAAAuO,GACA,IAAA1wC,EAAAolC,EAAAsL,EAAA,SAAA1qC,GAIA,OAfA,MAYAs1B,EAAAuJ,MACAvJ,EAAAwb,QAEA9wC,CACA,GAEAs1B,EAAAt7B,EAAAs7B,MACA,OAAAt7B,CACA,eCvBA,IAAAwzC,EAAkBzI,EAAQ,OAC1B0I,EAAuB1I,EAAQ,OAC/BuI,EAAqBvI,EAAQ,OAG7BgM,EAAA,yBAWAC,EAAAztC,KAAAulB,IAyEAub,EAAAlI,QAvDA,SAAAxjC,EAAA2gB,GACA,IAAA8uB,EAAAzvC,EAAA,GACAs4C,EAAA33B,EAAA,GACA43B,EAAA9I,EAAA6I,EACAE,EAAAD,EAAA,IAEAE,EA5BA,KA6BAH,GA9BA,GA8BA7I,GA7BA,KA8BA6I,GA7BA,KA6BA7I,GAAAzvC,EAAA,GAAAsJ,QAAAqX,EAAA,IACA,KAAA23B,GAAA33B,EAAA,GAAArX,QAAAqX,EAAA,IAhCA,GAgCA8uB,EAGA,IAAA+I,IAAAC,EACA,OAAAz4C,EAvCA,EA0CAs4C,IACAt4C,EAAA,GAAA2gB,EAAA,GAEA43B,GA7CA,EA6CA9I,EAAA,EA3CA,GA8CA,IAAAluC,EAAAof,EAAA,GACA,GAAApf,EAAA,CACA,IAAA4xC,EAAAnzC,EAAA,GACAA,EAAA,GAAAmzC,EAAA0B,EAAA1B,EAAA5xC,EAAAof,EAAA,IAAApf,EACAvB,EAAA,GAAAmzC,EAAAwB,EAAA30C,EAAA,GAAAo4C,GAAAz3B,EAAA,EACA,CAyBA,OAvBApf,EAAAof,EAAA,MAEAwyB,EAAAnzC,EAAA,GACAA,EAAA,GAAAmzC,EAAA2B,EAAA3B,EAAA5xC,EAAAof,EAAA,IAAApf,EACAvB,EAAA,GAAAmzC,EAAAwB,EAAA30C,EAAA,GAAAo4C,GAAAz3B,EAAA,KAGApf,EAAAof,EAAA,MAEA3gB,EAAA,GAAAuB,GA5DA,IA+DA+2C,IACAt4C,EAAA,SAAAA,EAAA,GAAA2gB,EAAA,GAAA03B,EAAAr4C,EAAA,GAAA2gB,EAAA,KAGA,MAAA3gB,EAAA,KACAA,EAAA,GAAA2gB,EAAA,IAGA3gB,EAAA,GAAA2gB,EAAA,GACA3gB,EAAA,GAAAu4C,EAEAv4C,CACA,gBCvFA,IAAA04C,EAActM,EAAQ,OAGtByF,EAAA6G,GAAA,IAAAA,EAEAhN,EAAAlI,QAAAqO,YCFAnG,EAAAlI,QAFA,iBCDA,IAAA+K,EAAgBnC,EAAQ,OACxBgL,EAAchL,EAAQ,OAGtBiM,EAAAztC,KAAAulB,IAwBAub,EAAAlI,QAZA,SAAAqK,EAAA8K,GAKA,IAJA,IAAAC,EAAA/K,EAAAvkC,OACAA,EAAA+uC,EAAAM,EAAArvC,OAAAsvC,GACAC,EAAAtK,EAAAV,GAEAvkC,KAAA,CACA,IAAAwxB,EAAA6d,EAAArvC,GACAukC,EAAAvkC,GAAA8tC,EAAAtc,EAAA8d,GAAAC,EAAA/d,QAAA1K,CACA,CACA,OAAAyd,CACA,YCzBA,IAAAuK,EAAA,yBA2BA1M,EAAAlI,QAhBA,SAAAqK,EAAA5mC,GAMA,IALA,IAAA6zB,GAAA,EACAxxB,EAAAukC,EAAAvkC,OACAwvC,EAAA,EACAz3C,EAAA,KAEAy5B,EAAAxxB,GAAA,CACA,IAAA/H,EAAAssC,EAAA/S,GACAv5B,IAAA0F,GAAA1F,IAAA62C,IACAvK,EAAA/S,GAAAsd,EACA/2C,EAAAy3C,KAAAhe,EAEA,CACA,OAAAz5B,CACA,gBC1BA,IAAAywC,EAAkB1F,EAAQ,OAiB1BuJ,EAhBevJ,EAAQ,MAgBvB2M,CAAAjH,GAEApG,EAAAlI,QAAAmS,gBCnBA,IAAAqD,EAAqB5M,EAAQ,OAC7B6M,EAAwB7M,EAAQ,OAChCoK,EAAkBpK,EAAQ,OAC1B8M,EAAwB9M,EAAQ,OAiBhCV,EAAAlI,QALA,SAAA8Q,EAAA6E,EAAA1J,GACA,IAAA9uB,EAAAw4B,EAAA,GACA,OAAA3C,EAAAlC,EAAA2E,EAAAt4B,EAAAu4B,EAAAF,EAAAr4B,GAAA8uB,IACA,gBClBA,IAAA2J,EAAoBhN,EAAQ,OAG5BiN,EAAA,mGAGAC,EAAA,WASAhH,EAAA8G,EAAA,SAAAhvC,GACA,IAAA/I,EAAA,GAOA,OANA,KAAA+I,EAAAhB,WAAA,IACA/H,EAAAqX,KAAA,IAEAtO,EAAAkQ,QAAA++B,EAAA,SAAA5vB,EAAA/c,EAAA6sC,EAAAC,GACAn4C,EAAAqX,KAAA6gC,EAAAC,EAAAl/B,QAAAg/B,EAAA,MAAA5sC,GAAA+c,EACA,GACApoB,CACA,GAEAqqC,EAAAlI,QAAA8O,gBC1BA,IAAAJ,EAAe9F,EAAQ,OAoBvBV,EAAAlI,QARA,SAAAjiC,GACA,oBAAAA,GAAA2wC,EAAA3wC,GACA,OAAAA,EAEA,IAAAF,EAAAE,EAAA,GACA,WAAAF,GAAA,EAAAE,IAAA,SAAAF,CACA,gBClBA,IAAA6sC,EAAgB9B,EAAQ,OACxBqN,EAAoBrN,EAAQ,OAc5BsN,EAAA,CACA,OANA,KAOA,QAbA,GAcA,WAbA,GAcA,SAbA,GAcA,cAbA,IAcA,QATA,KAUA,WAdA,IAeA,gBAdA,IAeA,SAbA,MAkCAhO,EAAAlI,QAVA,SAAAjI,EAAAkU,GAOA,OANAvB,EAAAwL,EAAA,SAAAC,GACA,IAAAp4C,EAAA,KAAAo4C,EAAA,GACAlK,EAAAkK,EAAA,KAAAF,EAAAle,EAAAh6B,IACAg6B,EAAA7iB,KAAAnX,EAEA,GACAg6B,EAAAhe,MACA,gBC3CA,IAAAyvB,EAAkBZ,EAAQ,OAC1BoB,EAAoBpB,EAAQ,OAC5BmC,EAAgBnC,EAAQ,OAoBxBV,EAAAlI,QAXA,SAAA8Q,GACA,GAAAA,aAAAtH,EACA,OAAAsH,EAAA5oC,QAEA,IAAArK,EAAA,IAAAmsC,EAAA8G,EAAArH,YAAAqH,EAAA5G,WAIA,OAHArsC,EAAA6rC,YAAAqB,EAAA+F,EAAApH,aACA7rC,EAAAssC,UAAA2G,EAAA3G,UACAtsC,EAAAusC,WAAA0G,EAAA1G,WACAvsC,CACA,gBCpBA,IAAAu4C,EAAiBxN,EAAQ,OA4BzBV,EAAAlI,QANA,SAAAuO,EAAAnb,EAAAijB,GAGA,OAFAjjB,EAAAijB,OAAAzpB,EAAAwG,EACAA,EAAAmb,GAAA,MAAAnb,EAAAmb,EAAAzoC,OAAAstB,EACAgjB,EAAA7H,EAtBA,SAsBA3hB,OAAAA,OAAAA,OAAAA,EAAAwG,EACA,gBC1BA,IAAA4Y,EAAgBpD,EAAQ,MAmCxBV,EAAAlI,QAJA,SAAAjiC,GACA,OAAAiuC,EAAAjuC,EA7BA,EA8BA,gBCjCA,IAAAq4C,EAAiBxN,EAAQ,OA8CzB,SAAA0N,EAAA/H,EAAA6C,EAAAiF,GAEA,IAAAx4C,EAAAu4C,EAAA7H,EA7CA,OA6CA3hB,OAAAA,OAAAA,OAAAA,OAAAA,EADAwkB,EAAAiF,OAAAzpB,EAAAwkB,GAGA,OADAvzC,EAAA4F,YAAA6yC,EAAA7yC,YACA5F,CACA,CAGAy4C,EAAA7yC,YAAA,GAEAykC,EAAAlI,QAAAsW,gBCxDA,IAAAzJ,EAAkBjE,EAAQ,OAqB1BV,EAAAlI,QALA,SAAAqK,GAEA,OADA,MAAAA,GAAAA,EAAAvkC,OACA+mC,EAAAxC,EAAA,KACA,gBCnBA,IAAAkM,EAAc3N,EAAQ,OACtB4N,EAAqB5N,EAAQ,MAG7B1zB,EAAA0B,MAAAiB,UAAA3C,KA0BA,SAAAuhC,EAAAlI,EAAAnb,GACA,UAAAA,EACA,SAAAtlB,EAAAC,GAAuB,OAAAwgC,EAAAzgC,EAAAC,EAAA,EACvB,SAAAD,GAAoB,OAAAygC,EAAAzgC,EAAA,CACpB,CASA,SAAA4oC,EAAArM,GAIA,IAHA,IAAAvkC,EAAAukC,EAAAA,EAAAvkC,OAAA,EACAjI,EAAA+Y,MAAA9Q,GAEAA,KACAjI,EAAAiI,GAAAukC,EAAAvkC,GAEA,OAAAjI,CACA,CAuDA,SAAA84C,EAAApI,EAAAqI,GACA,kBACA,IAAA9wC,EAAAjD,UAAAiD,OACA,GAAAA,EAAA,CAIA,IADA,IAAAtF,EAAAoW,MAAA9Q,GACAA,KACAtF,EAAAsF,GAAAjD,UAAAiD,GAEA,IAAAjI,EAAA2C,EAAA,GAAAo2C,EAAAh0C,WAAAgqB,EAAApsB,GAEA,OADA+tC,EAAA3rC,WAAAgqB,EAAApsB,GACA3C,CAPA,CAQA,CACA,CAgcAqqC,EAAAlI,QA/aA,SAAA6W,EAAAC,EAAA96C,EAAAuyC,EAAAlxC,GACA,IAAA05C,EAAA,mBAAA/6C,EACAg7C,EAAAh7C,IAAAgL,OAAAhL,GAOA,GALAg7C,IACA35C,EAAAkxC,EACAA,EAAAvyC,EACAA,OAAA4wB,GAEA,MAAA2hB,EACA,UAAAnkC,UAEA/M,IAAAA,EAAA,IAEA,IAAA45C,IACA,QAAA55C,IAAAA,EAAA65C,IADAD,IAEA,UAAA55C,IAAAA,EAAAi5C,MAFAW,IAGA,UAAA55C,IAAAA,EAAA85C,MAHAF,IAIA,cAAA55C,IAAAA,EAAA+5C,UAJAH,IAKA,UAAA55C,IAAAA,EAAAg6C,MAGAC,EAAAP,EAAAxI,EAAAiI,EACAe,EAAA,UAAAl6C,GAAAA,EAAAi5C,MACAkB,EAAA,UAAAn6C,GAAAA,EAAA85C,MACAM,EAAA,UAAAp6C,GAAAA,EAAAg6C,MACAK,EAAAX,EAAAxI,EAAAoJ,oBAAA/qB,EAEApP,EAAAu5B,EAAAxI,EAAA,CACAqD,IAAAkF,EAAAlF,IACAgG,OAAAd,EAAAc,OACA1vC,MAAA4uC,EAAA5uC,MACAouC,MAAAQ,EAAAR,MACAva,QAAA+a,EAAA/a,QACAllB,QAAAigC,EAAAjgC,QACAghC,QAAAf,EAAAe,QACAC,WAAAhB,EAAAgB,WACAC,UAAAjB,EAAAiB,UACAzN,SAAAwM,EAAAxM,SACAnvB,KAAA27B,EAAA37B,KACAk8B,MAAAP,EAAAO,MACAxE,UAAAiE,EAAAjE,UACAmF,OAAAlB,EAAAkB,QAGApG,EAAAp0B,EAAAo0B,IACAgG,EAAAp6B,EAAAo6B,OACA1vC,EAAAsV,EAAAtV,MACAouC,EAAA94B,EAAA84B,MACA2B,EAAAz6B,EAAAue,QACAllB,EAAA2G,EAAA3G,QACAghC,EAAAr6B,EAAAq6B,QACAC,EAAAt6B,EAAAs6B,WACAC,EAAAv6B,EAAAu6B,UACA58B,EAAAqC,EAAArC,KACAk8B,EAAA75B,EAAA65B,MACAxE,EAAAr1B,EAAAq1B,UACAmF,EAAAx6B,EAAAw6B,OAEAE,EAAA/8B,EAAAo7B,EAAA4B,WAEAC,EAAA,CACAC,UAAA,SAAAA,GACA,kBACA,IAAAt6C,EAAA8E,UAAA,GACA,OAAAgU,EAAA9Y,GACAs6C,EAAA3B,EAAA34C,IACAs6C,EAAAz1C,WAAAgqB,EAAA/pB,UACA,CACA,EACAynC,SAAA,SAAAA,GACA,kBACA,IACA8G,EAAAvuC,UAAA,GACAhF,EAAAysC,EAFAznC,UAAA,GAEAuuC,GACAtrC,EAAAjI,EAAAiI,OAEA,OAAAmxC,GAAA,iBAAA7F,GACAA,EAAAA,EAAA,EAAAA,EAAA,IACAtrC,GAAAA,GAAAsrC,EAAAvzC,EAAA44C,EAAA54C,EAAAuzC,IAEAvzC,CACA,CACA,EACAy6C,MAAA,SAAAA,GACA,gBAAAn7B,GACA,IAAAoxB,EAAA/wC,KACA,IAAAs6C,EAAAvJ,GACA,OAAA+J,EAAA/J,EAAAvnC,OAAAmW,IAEA,IAAAo7B,EAAA,GAiBA,OAhBAN,EAAA98B,EAAAgC,GAAA,SAAAtZ,GACAi0C,EAAA36B,EAAAtZ,KACA00C,EAAArjC,KAAA,CAAArR,EAAA0qC,EAAA12B,UAAAhU,IAEA,GAEAy0C,EAAA/J,EAAAvnC,OAAAmW,IAEA86B,EAAAM,EAAA,SAAApC,GACA,IAAAp4C,EAAAo4C,EAAA,GACA2B,EAAA/5C,GACAwwC,EAAA12B,UAAAs+B,EAAA,IAAAp4C,SAEAwwC,EAAA12B,UAAAs+B,EAAA,GAEA,GACA5H,CACA,CACA,EACAiK,OAAA,SAAAA,GACA,gBAAAplB,GACA,IAAAge,EAAAhe,EAAA,IAAAyf,EAAAzf,GAAA,EACA,OAAAkjB,EAAAkC,EAAAplB,GAAAge,EACA,CACA,EACAiG,MAAA,SAAAA,GACA,gBAAA9I,EAAA4G,GACA,IAAA/D,EAAA+D,EAAAA,EAAArvC,OAAA,EACA,OAAAwwC,EAAAe,EAAA9I,EAAA4G,GAAA/D,EACA,CACA,EACAuG,aAAA,SAAAA,GACA,gBAAAc,GACA,OAAA5B,EAAAC,EAAAa,EAAAc,GAAAp7C,EACA,CACA,GAmDA,SAAAq7C,EAAA18C,EAAAuyC,EAAAnb,GACA,GAAA6jB,IAAAO,IAAAjB,EAAAoC,UAAA38C,IAAA,CACA,IAAAQ,EAAA+5C,EAAAqC,aAAA58C,GACA0N,EAAAlN,GAAAA,EAAAkN,MAEA,YAAAkjB,IAAAljB,EAAAkoC,EAAArD,EAAAnb,GApPA,SAAAmb,EAAA7kC,GACA,kBAKA,IAJA,IAAA5D,EAAAjD,UAAAiD,OACAwpC,EAAAxpC,EAAA,EACAtF,EAAAoW,MAAA9Q,GAEAA,KACAtF,EAAAsF,GAAAjD,UAAAiD,GAEA,IAAAukC,EAAA7pC,EAAAkJ,GACAmvC,EAAAr4C,EAAAyF,MAAA,EAAAyD,GAQA,OANA2gC,GACAn1B,EAAAtS,MAAAi2C,EAAAxO,GAEA3gC,GAAA4lC,GACAp6B,EAAAtS,MAAAi2C,EAAAr4C,EAAAyF,MAAAyD,EAAA,IAEA6kC,EAAA3rC,MAAApF,KAAAq7C,EACA,CACA,CAgOAC,CAAAvK,EAAA7kC,EACA,CACA,OAAA6kC,CACA,CAWA,SAAAwK,EAAA/8C,EAAAuyC,EAAAnb,GACA,OAAA6jB,GAAA7jB,EAAA,IAAAqkB,IAAAlB,EAAAyC,UAAAh9C,IACAq7C,EAAA9I,EAAAgI,EAAA0C,YAAAj9C,IAAAu6C,EAAA2C,SAAA9lB,IACAmb,CACA,CAUA,SAAA4K,EAAAhwC,EAAAgkC,GASA,IANA,IAAA7V,GAAA,EACAxxB,GAHAqnC,EAAA6K,EAAA7K,IAGArnC,OACAwpC,EAAAxpC,EAAA,EACAjI,EAAAqK,EAAAlB,OAAAmC,IACAiwC,EAAAv7C,EAEA,MAAAu7C,KAAA9hB,EAAAxxB,GAAA,CACA,IAAAjC,EAAAspC,EAAA7V,GACAv5B,EAAAq7C,EAAAv1C,GAEA,MAAA9F,GACA+5C,EAAA/5C,IAAA85C,EAAA95C,IAAAg6C,EAAAh6C,KACAq7C,EAAAv1C,GAAAqE,EAAAovB,GAAAgY,EAAAvxC,EAAAiJ,OAAAjJ,KAEAq7C,EAAAA,EAAAv1C,EACA,CACA,OAAAhG,CACA,CAoBA,SAAAw7C,EAAAr9C,EAAAuyC,GACA,IAAA+K,EAAA/C,EAAAgD,YAAAv9C,IAAAA,EACAw9C,EAAAjD,EAAAkD,MAAAH,IAAAA,EACAI,EAAAr8C,EAEA,gBAAAA,GACA,IAAAs8C,EAAA5C,EAAAW,EAAAl6B,EACAo8B,EAAA7C,EAAAW,EAAA8B,GAAAjL,EACAsL,EAAAjC,EAAAA,EAAA,GAAuC8B,GAAAr8C,GAEvC,OAAAw5C,EAAA8C,EAAAL,EAAAM,EAAAC,EACA,CACA,CA2CA,SAAAC,EAAAvL,EAAAwL,GACA,kBACA,IAAAj0C,EAAAjD,UAAAiD,OACA,IAAAA,EACA,OAAAyoC,IAGA,IADA,IAAA/tC,EAAAoW,MAAA9Q,GACAA,KACAtF,EAAAsF,GAAAjD,UAAAiD,GAEA,IAAAwxB,EAAA2f,EAAA,EAAAnxC,EAAA,EAEA,OADAtF,EAAA82B,GAAAyiB,EAAAv5C,EAAA82B,IACAiX,EAAA3rC,WAAAgqB,EAAApsB,EACA,CACA,CAWA,SAAAw5C,EAAAh+C,EAAAuyC,EAAA9qC,GACA,IAAA5F,EACAy7C,EAAA/C,EAAAgD,YAAAv9C,IAAAA,EACAi+C,EAAA1L,EACAuC,EAAAsH,EAAAkB,GA2CA,OAzCAxI,EACAmJ,EAAAnJ,EAAAvC,GAEA0I,IACAV,EAAA2D,OAAA7P,MAAAiP,GACAW,EAAAtD,EAAApI,EAAAmI,GAEAH,EAAA2D,OAAA/wC,OAAAmwC,GACAW,EAAAtD,EAAApI,EAraA,SAAAA,GACA,gBAAAplC,GACA,OAAAolC,EAAA,GAAkBplC,EAClB,CACA,CAiaAgxC,CAAA5L,IAEAgI,EAAA2D,OAAA9f,IAAAkf,KACAW,EAAAtD,EAAApI,EAAA4K,KAGAlB,EAAAC,EAAA,SAAAkC,GAeA,OAdAnC,EAAA1B,EAAA4B,UAAAiC,GAAA,SAAAC,GACA,GAAAf,GAAAe,EAAA,CACA,IAAA79C,EAAA+5C,EAAAqC,aAAAU,GACAgB,EAAA99C,GAAAA,EAAA89C,WAQA,OANAz8C,EAAAy8C,EACA5B,EAAAY,EAAAP,EAAAO,EAAAW,EAAAG,GAAAA,GACArB,EAAAO,EAAAZ,EAAAY,EAAAW,EAAAG,GAAAA,GAGAv8C,EAvMA,SAAA7B,EAAAuyC,EAAAnb,GACA,OAAAmkB,GAAAN,GAAA7jB,EAAA,EACAkjB,EAAA/H,EAAAnb,GACAmb,CACA,CAmMAgM,CAAAjB,EADAz7C,EA7NA,SAAA7B,EAAAuyC,GACA,GAAA0I,EAAA,CACA,IAAA9B,EAAAoB,EAAAiE,cAAAx+C,GACA,GAAAm5C,EACA,OAmJA,SAAA5G,EAAA4G,GACA,OAAA2E,EAAAvL,EAAA,SAAAA,GACA,IAAAnb,EAAA+hB,EAAArvC,OACA,OA/ZA,SAAAyoC,EAAAnb,GACA,UAAAA,EACA,SAAAtlB,EAAAC,GAAuB,OAAAwgC,EAAA3rC,WAAAgqB,EAAA/pB,UAAA,EACvB,SAAAiL,GAAoB,OAAAygC,EAAA3rC,WAAAgqB,EAAA/pB,UAAA,CACpB,CA2ZA43C,CAAApD,EAAAZ,EAAAlI,EAAAnb,GAAA+hB,GAAA/hB,EACA,EACA,CAxJAonB,CAAAjM,EAAA4G,GAEA,IAAA/hB,GAAA2jB,GAAAR,EAAAmE,YAAA1+C,GACA,GAAAo3B,EACA,OA8HA,SAAAmb,EAAAnb,GACA,OAAA0mB,EAAAvL,EAAA,SAAAA,GACA,yBAAAA,EAAAkI,EAAAlI,EAAAnb,GAAAmb,CACA,EACA,CAlIAmM,CAAAnM,EAAAnb,EAEA,CACA,OAAAmb,CACA,CAiNAoM,CAAArB,EAAAz7C,GACAu8C,IACA,CACA,CACA,IACAv8C,CACA,GAEAA,IAAAA,EAAAo8C,GACAp8C,GAAA0wC,IACA1wC,EAAA05C,EAAAjB,EAAAz4C,EAAA,cACA,OAAA0wC,EAAA3rC,MAAApF,KAAAqF,UACA,GAEAhF,EAAA+8C,QAAAvB,EAAAC,EAAA/K,GACA1wC,EAAA4F,YAAA8qC,EAAA9qC,YAAAA,EAEA5F,CACA,CAIA,IAAAm5C,EACA,OAAAgD,EAAAh+C,EAAAuyC,EAAA+I,GAEA,IAAAuD,EAAAtM,EAGAgK,EAAA,GAwCA,OAvCAN,EAAAC,EAAA,SAAAkC,GACAnC,EAAA1B,EAAA4B,UAAAiC,GAAA,SAAAv2C,GACA,IAAA0qC,EAAAsM,EAAAtE,EAAAkD,MAAA51C,IAAAA,GACA0qC,GACAgK,EAAArjC,KAAA,CAAArR,EAAAm2C,EAAAn2C,EAAA0qC,EAAAsM,IAEA,EACA,GAGA5C,EAAA98B,EAAA0/B,GAAA,SAAAh3C,GACA,IAAA0qC,EAAAsM,EAAAh3C,GACA,sBAAA0qC,EAAA,CAEA,IADA,IAAAzoC,EAAAyyC,EAAAzyC,OACAA,KACA,GAAAyyC,EAAAzyC,GAAA,IAAAjC,EACA,OAGA0qC,EAAAqM,QAAAvB,EAAAx1C,EAAA0qC,GACAgK,EAAArjC,KAAA,CAAArR,EAAA0qC,GACA,CACA,GAGA0J,EAAAM,EAAA,SAAApC,GACA0E,EAAA1E,EAAA,IAAAA,EAAA,EACA,GAEA0E,EAAAD,QAnLA,SAAAv9C,GACA,OAAAw9C,EAAAlD,aAAAiD,QAAAv9C,EAAAw9C,MAAAjuB,EACA,EAkLAiuB,EAAAp3C,YAAAo3C,EAGA5C,EAAA98B,EAAA0/B,GAAA,SAAAh3C,GACAo0C,EAAA1B,EAAAuE,YAAAj3C,IAAA,YAAAk3C,GACAF,EAAAE,GAAAF,EAAAh3C,EACA,EACA,GAEAg3C,CACA,cCrjBA7a,EAAAuZ,YAAmB,CAGnBtB,KAAA,UACA+C,UAAA,eACA7rC,QAAA,UACA8rC,UAAA,YACA/9B,OAAA,WACAg+B,UAAA,cACAC,cAAA,kBACAC,WAAA,eACAzyB,MAAA,OAGA0yB,SAAA,aACAr1B,QAAA,UACA7R,SAAA,MAGAmnC,GAAA,cACAC,EAAA,YACAC,EAAA,WACAC,IAAA,QACAC,QAAA,YACAC,OAAA,WACAC,IAAA,OACAC,QAAA,WACAj5C,MAAA,SACAk5C,MAAA,MACAC,UAAA,MACAC,WAAA,SACAC,QAAA,YACAC,SAAA,WACAC,OAAA,QACAC,WAAA,QACAC,SAAA,YACAC,cAAA,iBACAC,OAAA,UACAC,UAAA,KACAC,QAAA,QACA76B,KAAA,UACA86B,UAAA,SACAC,KAAA,OACAC,QAAA,OACAC,KAAA,MACA1P,KAAA,MACA2P,OAAA,kBACAC,OAAA,QACAC,MAAA,KACAC,QAAA,OACAC,KAAA,OACAC,MAAA,MACA50C,KAAA,MACA60C,OAAA,kBACAC,OAAA,QACA5iC,MAAA,KACA6iC,oBAAA,MACAC,sBAAA,QACAC,wBAAA,UACAC,SAAA,YACAC,cAAA,iBACAC,QAAA,OACAC,OAAA,UACAC,QAAA,WACAC,MAAA,aACAC,QAAA,UACAC,OAAA,aAIAhe,EAAAmY,UAAiB,CACjB,GACA,gEACA,oEACA,0EACA,2EACA,wEACA,6BAEA,GACA,0EACA,iEACA,mEACA,sEACA,yEACA,yEACA,+DACA,iEACA,uEACA,mEACA,uEACA,wEACA,mEACA,yEACA,iEACA,wEACA,qEACA,wEACA,yEACA,uEACA,6DACA,iBAEA,GACA,oEACA,sEACA,2EACA,wEACA,iEACA,uEACA,+DACA,uEACA,qBAEA,GACA,gCAKAnY,EAAAkZ,SAAgB,CAChB,QACA,UACA,aAIAlZ,EAAA0a,YAAmB,CACnBuD,eAAA,EACAC,UAAA,EACAC,MAAA,EACA/6B,OAAA,EACAg7B,KAAA,EACAC,SAAA,EACAC,UAAA,EACAC,cAAA,EACAC,QAAA,EACAC,SAAA,EACAC,aAAA,EACAC,cAAA,EACAC,kBAAA,EACAC,YAAA,EACApY,QAAA,EACAqY,YAAA,EACAC,aAAA,EACAhjB,QAAA,EACAijB,aAAA,EACAC,MAAA,EACAC,WAAA,EACAC,OAAA,EACAC,YAAA,EACAv/C,IAAA,EACAw/C,QAAA,EACAC,UAAA,EACAC,UAAA,EACAp/C,OAAA,EACAq/C,YAAA,EACAC,OAAA,EACA/jC,OAAA,EACAgkC,KAAA,EACAC,eAAA,EACAC,UAAA,EACAC,MAAA,EACA9F,UAAA,GAIA/Z,EAAAwa,cAAqB,CACrB6E,QAAA,IACAG,YAAA,OAIAxf,EAAAiZ,YAAmB,CACnB6G,gBAAA,MACAC,aAAA,QACAC,cAAA,MACAC,WAAA,QACAC,aAAA,QACAC,eAAA,QACAC,MAAA,QACAC,eAAA,QACAC,iBAAA,QACAC,YAAA,QACAC,YAAA,QACAC,aAAA,MACAC,UAAA,QACAC,SAAA,QACAC,YAAA,QACAC,cAAA,QACAC,UAAA,QACAC,YAAA,QACAC,UAAA,QACAC,eAAA,QACAC,QAAA,UACAC,cA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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/dav/src/utils/date.js","webpack:///nextcloud/apps/dav/src/service/logger.js","webpack:///nextcloud/apps/dav/src/components/AbsenceForm.vue","webpack:///nextcloud/apps/dav/src/components/AbsenceForm.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/dav/src/components/AbsenceForm.vue?7565","webpack://nextcloud/./apps/dav/src/components/AbsenceForm.vue?0782","webpack://nextcloud/./apps/dav/src/components/AbsenceForm.vue?5b67","webpack:///nextcloud/apps/dav/src/components/AvailabilityForm.vue","webpack://nextcloud/./node_modules/@nextcloud/calendar-availability-vue/dist/assets/index-Ctj4Wyhb.css?d95b","webpack:///nextcloud/node_modules/ical.js/dist/ical.js","webpack:///nextcloud/node_modules/uuid/dist/esm-browser/native.js","webpack:///nextcloud/node_modules/uuid/dist/esm-browser/rng.js","webpack:///nextcloud/node_modules/uuid/dist/esm-browser/stringify.js","webpack:///nextcloud/node_modules/uuid/dist/esm-browser/v4.js","webpack:///nextcloud/node_modules/@nextcloud/calendar-availability-vue/dist/index.mjs","webpack:///nextcloud/apps/dav/src/dav/client.js","webpack:///nextcloud/apps/dav/src/components/AvailabilityForm.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/dav/src/service/CalendarService.js","webpack:///nextcloud/apps/dav/src/service/PreferenceService.js","webpack://nextcloud/./apps/dav/src/components/AvailabilityForm.vue?c140","webpack://nextcloud/./apps/dav/src/components/AvailabilityForm.vue?1bb2","webpack:///nextcloud/apps/dav/src/views/Availability.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/dav/src/views/Availability.vue","webpack://nextcloud/./apps/dav/src/views/Availability.vue?aa5a","webpack://nextcloud/./apps/dav/src/views/Availability.vue?4eb1","webpack:///nextcloud/apps/dav/src/settings-personal-availability.js","webpack:///nextcloud/node_modules/@nextcloud/calendar-availability-vue/dist/assets/index-Ctj4Wyhb.css","webpack:///nextcloud/apps/dav/src/components/AbsenceForm.vue?vue&type=style&index=0&id=a9995350&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/dav/src/components/AvailabilityForm.vue?vue&type=style&index=0&id=e0a387ae&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/icalzone/dist/index.js","webpack:///nextcloud/node_modules/icalzone/dist/zones.js","webpack:///nextcloud/node_modules/lodash/_LazyWrapper.js","webpack:///nextcloud/node_modules/lodash/_LodashWrapper.js","webpack:///nextcloud/node_modules/lodash/_arrayEach.js","webpack:///nextcloud/node_modules/lodash/_arrayMap.js","webpack:///nextcloud/node_modules/lodash/_baseAssign.js","webpack:///nextcloud/node_modules/lodash/_baseAssignIn.js","webpack:///nextcloud/node_modules/lodash/_baseClone.js","webpack:///nextcloud/node_modules/lodash/_baseFlatten.js","webpack:///nextcloud/node_modules/lodash/_baseGet.js","webpack:///nextcloud/node_modules/lodash/_baseHasIn.js","webpack:///nextcloud/node_modules/lodash/_baseIsMap.js","webpack:///nextcloud/node_modules/lodash/_baseIsMatch.js","webpack:///nextcloud/node_modules/lodash/_baseIsSet.js","webpack:///nextcloud/node_modules/lodash/_baseIteratee.js","webpack:///nextcloud/node_modules/lodash/_baseLodash.js","webpack:///nextcloud/node_modules/lodash/_baseMatches.js","webpack:///nextcloud/node_modules/lodash/_baseMatchesProperty.js","webpack:///nextcloud/node_modules/lodash/_baseProperty.js","webpack:///nextcloud/node_modules/lodash/_basePropertyDeep.js","webpack:///nextcloud/node_modules/lodash/_baseSetData.js","webpack:///nextcloud/node_modules/lodash/_baseToString.js","webpack:///nextcloud/node_modules/lodash/_castPath.js","webpack:///nextcloud/node_modules/lodash/_cloneDataView.js","webpack:///nextcloud/node_modules/lodash/_cloneRegExp.js","webpack:///nextcloud/node_modules/lodash/_cloneSymbol.js","webpack:///nextcloud/node_modules/lodash/_composeArgs.js","webpack:///nextcloud/node_modules/lodash/_composeArgsRight.js","webpack:///nextcloud/node_modules/lodash/_copySymbols.js","webpack:///nextcloud/node_modules/lodash/_copySymbolsIn.js","webpack:///nextcloud/node_modules/lodash/_countHolders.js","webpack:///nextcloud/node_modules/lodash/_createBind.js","webpack:///nextcloud/node_modules/lodash/_createCtor.js","webpack:///nextcloud/node_modules/lodash/_createCurry.js","webpack:///nextcloud/node_modules/lodash/_createHybrid.js","webpack:///nextcloud/node_modules/lodash/_createPartial.js","webpack:///nextcloud/node_modules/lodash/_createRecurry.js","webpack:///nextcloud/node_modules/lodash/_createWrap.js","webpack:///nextcloud/node_modules/lodash/_flatRest.js","webpack:///nextcloud/node_modules/lodash/_getAllKeysIn.js","webpack:///nextcloud/node_modules/lodash/_getData.js","webpack:///nextcloud/node_modules/lodash/_getFuncName.js","webpack:///nextcloud/node_modules/lodash/_getHolder.js","webpack:///nextcloud/node_modules/lodash/_getMatchData.js","webpack:///nextcloud/node_modules/lodash/_getSymbolsIn.js","webpack:///nextcloud/node_modules/lodash/_getWrapDetails.js","webpack:///nextcloud/node_modules/lodash/_hasPath.js","webpack:///nextcloud/node_modules/lodash/_initCloneArray.js","webpack:///nextcloud/node_modules/lodash/_initCloneByTag.js","webpack:///nextcloud/node_modules/lodash/_insertWrapDetails.js","webpack:///nextcloud/node_modules/lodash/_isFlattenable.js","webpack:///nextcloud/node_modules/lodash/_isKey.js","webpack:///nextcloud/node_modules/lodash/_isLaziable.js","webpack:///nextcloud/node_modules/lodash/_isStrictComparable.js","webpack:///nextcloud/node_modules/lodash/_matchesStrictComparable.js","webpack:///nextcloud/node_modules/lodash/_memoizeCapped.js","webpack:///nextcloud/node_modules/lodash/_mergeData.js","webpack:///nextcloud/node_modules/lodash/_metaMap.js","webpack:///nextcloud/node_modules/lodash/_realNames.js","webpack:///nextcloud/node_modules/lodash/_reorder.js","webpack:///nextcloud/node_modules/lodash/_replaceHolders.js","webpack:///nextcloud/node_modules/lodash/_setData.js","webpack:///nextcloud/node_modules/lodash/_setWrapToString.js","webpack:///nextcloud/node_modules/lodash/_stringToPath.js","webpack:///nextcloud/node_modules/lodash/_toKey.js","webpack:///nextcloud/node_modules/lodash/_updateWrapDetails.js","webpack:///nextcloud/node_modules/lodash/_wrapperClone.js","webpack:///nextcloud/node_modules/lodash/ary.js","webpack:///nextcloud/node_modules/lodash/clone.js","webpack:///nextcloud/node_modules/lodash/curry.js","webpack:///nextcloud/node_modules/lodash/flatten.js","webpack:///nextcloud/node_modules/lodash/fp/_baseConvert.js","webpack:///nextcloud/node_modules/lodash/fp/_mapping.js","webpack:///nextcloud/node_modules/lodash/fp/_util.js","webpack:///nextcloud/node_modules/lodash/fp/convert.js","webpack:///nextcloud/node_modules/lodash/fp/memoize.js","webpack:///nextcloud/node_modules/lodash/fp/placeholder.js","webpack:///nextcloud/node_modules/lodash/get.js","webpack:///nextcloud/node_modules/lodash/hasIn.js","webpack:///nextcloud/node_modules/lodash/isError.js","webpack:///nextcloud/node_modules/lodash/isMap.js","webpack:///nextcloud/node_modules/lodash/isSet.js","webpack:///nextcloud/node_modules/lodash/isWeakMap.js","webpack:///nextcloud/node_modules/lodash/iteratee.js","webpack:///nextcloud/node_modules/lodash/memoize.js","webpack:///nextcloud/node_modules/lodash/property.js","webpack:///nextcloud/node_modules/lodash/rearg.js","webpack:///nextcloud/node_modules/lodash/toFinite.js","webpack:///nextcloud/node_modules/lodash/toInteger.js","webpack:///nextcloud/node_modules/lodash/toPath.js","webpack:///nextcloud/node_modules/lodash/toString.js","webpack:///nextcloud/node_modules/lodash/wrapperLodash.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/set anonymous default export name","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Format a date as 'YYYY-MM-DD'.\n *\n * @param {Date} date A date instance to format.\n * @return {string} 'YYYY-MM-DD'\n */\nexport function formatDateAsYMD(date) {\n\tconst year = date.getFullYear()\n\tconst month = (date.getMonth() + 1).toString().padStart(2, '0')\n\tconst day = date.getDate().toString().padStart(2, '0')\n\treturn `${year}-${month}-${day}`\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst logger = getLoggerBuilder()\n\t.setApp('dav')\n\t.detectUser()\n\t.build()\n\nexport default logger\n","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AbsenceForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AbsenceForm.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AbsenceForm.vue?vue&type=style&index=0&id=a9995350&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AbsenceForm.vue?vue&type=style&index=0&id=a9995350&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AbsenceForm.vue?vue&type=template&id=a9995350&scoped=true\"\nimport script from \"./AbsenceForm.vue?vue&type=script&lang=js\"\nexport * from \"./AbsenceForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./AbsenceForm.vue?vue&type=style&index=0&id=a9995350&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a9995350\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{staticClass:\"absence\",on:{\"submit\":function($event){$event.preventDefault();return _vm.saveForm.apply(null, arguments)}}},[_c('div',{staticClass:\"absence__dates\"},[_c('NcDateTimePickerNative',{staticClass:\"absence__dates__picker\",attrs:{\"id\":\"absence-first-day\",\"label\":_vm.$t('dav', 'First day'),\"required\":true},model:{value:(_vm.firstDay),callback:function ($$v) {_vm.firstDay=$$v},expression:\"firstDay\"}}),_vm._v(\" \"),_c('NcDateTimePickerNative',{staticClass:\"absence__dates__picker\",attrs:{\"id\":\"absence-last-day\",\"label\":_vm.$t('dav', 'Last day (inclusive)'),\"required\":true},model:{value:(_vm.lastDay),callback:function ($$v) {_vm.lastDay=$$v},expression:\"lastDay\"}})],1),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"replacement-search-input\"}},[_vm._v(_vm._s(_vm.$t('dav', 'Out of office replacement (optional)')))]),_vm._v(\" \"),_c('NcSelect',{ref:\"select\",attrs:{\"input-id\":\"replacement-search-input\",\"loading\":_vm.searchLoading,\"placeholder\":_vm.$t('dav', 'Name of the replacement'),\"clear-search-on-blur\":() => false,\"user-select\":true,\"options\":_vm.options},on:{\"search\":_vm.asyncFind},scopedSlots:_vm._u([{key:\"no-options\",fn:function({ search }){return [_vm._v(\"\\n\\t\\t\\t\"+_vm._s(search ?_vm.$t('dav', 'No results.') : _vm.$t('dav', 'Start typing.'))+\"\\n\\t\\t\")]}}]),model:{value:(_vm.replacementUser),callback:function ($$v) {_vm.replacementUser=$$v},expression:\"replacementUser\"}}),_vm._v(\" \"),_c('NcTextField',{attrs:{\"value\":_vm.status,\"label\":_vm.$t('dav', 'Short absence status'),\"required\":true},on:{\"update:value\":function($event){_vm.status=$event}}}),_vm._v(\" \"),_c('NcTextArea',{attrs:{\"value\":_vm.message,\"label\":_vm.$t('dav', 'Long absence Message'),\"required\":true},on:{\"update:value\":function($event){_vm.message=$event}}}),_vm._v(\" \"),_c('div',{staticClass:\"absence__buttons\"},[_c('NcButton',{attrs:{\"disabled\":_vm.loading || !_vm.valid,\"type\":\"primary\",\"native-type\":\"submit\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Save'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"disabled\":_vm.loading || !_vm.valid,\"type\":\"error\"},on:{\"click\":_vm.clearAbsence}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Disable absence'))+\"\\n\\t\\t\")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c(_setup.CalendarAvailability,{attrs:{\"slots\":_setup.slots,\"loading\":_setup.loading,\"l10n-to\":_setup.t('dav', 'to'),\"l10n-delete-slot\":_setup.t('dav', 'Delete slot'),\"l10n-empty-day\":_setup.t('dav', 'No working hours set'),\"l10n-add-slot\":_setup.t('dav', 'Add slot'),\"l10n-week-day-list-label\":_setup.t('dav', 'Weekdays'),\"l10n-monday\":_setup.t('dav', 'Monday'),\"l10n-tuesday\":_setup.t('dav', 'Tuesday'),\"l10n-wednesday\":_setup.t('dav', 'Wednesday'),\"l10n-thursday\":_setup.t('dav', 'Thursday'),\"l10n-friday\":_setup.t('dav', 'Friday'),\"l10n-saturday\":_setup.t('dav', 'Saturday'),\"l10n-sunday\":_setup.t('dav', 'Sunday'),\"l10n-start-picker-label\":(dayName) => _setup.t('dav', 'Pick a start time for {dayName}', { dayName }),\"l10n-end-picker-label\":(dayName) => _setup.t('dav', 'Pick a end time for {dayName}', { dayName })},on:{\"update:slots\":function($event){_setup.slots=$event}}}),_vm._v(\" \"),_c(_setup.NcCheckboxRadioSwitch,{model:{value:(_setup.automated),callback:function ($$v) {_setup.automated=$$v},expression:\"automated\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_setup.t('dav', 'Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications.'))+\"\\n\\t\")]),_vm._v(\" \"),_c(_setup.NcButton,{attrs:{\"disabled\":_setup.loading || _setup.saving,\"variant\":\"primary\"},on:{\"click\":_setup.save}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_setup.t('dav', 'Save'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./index-Ctj4Wyhb.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./index-Ctj4Wyhb.css\";\n export default content && content.locals ? content.locals : undefined;\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n/**\n * Represents the BINARY value type, which contains extra methods for encoding and decoding.\n *\n * @memberof ICAL\n */\nclass Binary {\n /**\n * Creates a binary value from the given string.\n *\n * @param {String} aString The binary value string\n * @return {Binary} The binary value instance\n */\n static fromString(aString) {\n return new Binary(aString);\n }\n\n /**\n * Creates a new ICAL.Binary instance\n *\n * @param {String} aValue The binary data for this value\n */\n constructor(aValue) {\n this.value = aValue;\n }\n\n /**\n * The type name, to be used in the jCal object.\n * @default \"binary\"\n * @constant\n */\n icaltype = \"binary\";\n\n /**\n * Base64 decode the current value\n *\n * @return {String} The base64-decoded value\n */\n decodeValue() {\n return this._b64_decode(this.value);\n }\n\n /**\n * Encodes the passed parameter with base64 and sets the internal\n * value to the result.\n *\n * @param {String} aValue The raw binary value to encode\n */\n setEncodedValue(aValue) {\n this.value = this._b64_encode(aValue);\n }\n\n _b64_encode(data) {\n // http://kevin.vanzonneveld.net\n // + original by: Tyler Akins (http://rumkin.com)\n // + improved by: Bayron Guevara\n // + improved by: Thunder.m\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfixed by: Pellentesque Malesuada\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + improved by: Rafał Kukawski (http://kukawski.pl)\n // * example 1: base64_encode('Kevin van Zonneveld');\n // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='\n // mozilla has this native\n // - but breaks in 2.0.0.12!\n //if (typeof this.window['atob'] == 'function') {\n // return atob(data);\n //}\n let b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\" +\n \"abcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n enc = \"\",\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1 << 16 | o2 << 8 | o3;\n\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n let r = data.length % 3;\n\n return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);\n\n }\n\n _b64_decode(data) {\n // http://kevin.vanzonneveld.net\n // + original by: Tyler Akins (http://rumkin.com)\n // + improved by: Thunder.m\n // + input by: Aman Gupta\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfixed by: Onno Marsman\n // + bugfixed by: Pellentesque Malesuada\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + input by: Brett Zamir (http://brett-zamir.me)\n // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');\n // * returns 1: 'Kevin van Zonneveld'\n // mozilla has this native\n // - but breaks in 2.0.0.12!\n //if (typeof this.window['btoa'] == 'function') {\n // return btoa(data);\n //}\n let b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\" +\n \"abcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n dec = \"\",\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data += '';\n\n do { // unpack four hexets into three octets using index points in b64\n h1 = b64.indexOf(data.charAt(i++));\n h2 = b64.indexOf(data.charAt(i++));\n h3 = b64.indexOf(data.charAt(i++));\n h4 = b64.indexOf(data.charAt(i++));\n\n bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;\n\n o1 = bits >> 16 & 0xff;\n o2 = bits >> 8 & 0xff;\n o3 = bits & 0xff;\n\n if (h3 == 64) {\n tmp_arr[ac++] = String.fromCharCode(o1);\n } else if (h4 == 64) {\n tmp_arr[ac++] = String.fromCharCode(o1, o2);\n } else {\n tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);\n }\n } while (i < data.length);\n\n dec = tmp_arr.join('');\n\n return dec;\n }\n\n /**\n * The string representation of this value\n * @return {String}\n */\n toString() {\n return this.value;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nconst DURATION_LETTERS = /([PDWHMTS]{1,1})/;\nconst DATA_PROPS_TO_COPY = [\"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"isNegative\"];\n\n/**\n * This class represents the \"duration\" value type, with various calculation\n * and manipulation methods.\n *\n * @memberof ICAL\n */\nclass Duration {\n /**\n * Returns a new ICAL.Duration instance from the passed seconds value.\n *\n * @param {Number} aSeconds The seconds to create the instance from\n * @return {Duration} The newly created duration instance\n */\n static fromSeconds(aSeconds) {\n return (new Duration()).fromSeconds(aSeconds);\n }\n\n /**\n * Checks if the given string is an iCalendar duration value.\n *\n * @param {String} value The raw ical value\n * @return {Boolean} True, if the given value is of the\n * duration ical type\n */\n static isValueString(string) {\n return (string[0] === 'P' || string[1] === 'P');\n }\n\n /**\n * Creates a new {@link ICAL.Duration} instance from the passed string.\n *\n * @param {String} aStr The string to parse\n * @return {Duration} The created duration instance\n */\n static fromString(aStr) {\n let pos = 0;\n let dict = Object.create(null);\n let chunks = 0;\n\n while ((pos = aStr.search(DURATION_LETTERS)) !== -1) {\n let type = aStr[pos];\n let numeric = aStr.slice(0, Math.max(0, pos));\n aStr = aStr.slice(pos + 1);\n\n chunks += parseDurationChunk(type, numeric, dict);\n }\n\n if (chunks < 2) {\n // There must be at least a chunk with \"P\" and some unit chunk\n throw new Error(\n 'invalid duration value: Not enough duration components in \"' + aStr + '\"'\n );\n }\n\n return new Duration(dict);\n }\n\n /**\n * Creates a new ICAL.Duration instance from the given data object.\n *\n * @param {Object} aData An object with members of the duration\n * @param {Number=} aData.weeks Duration in weeks\n * @param {Number=} aData.days Duration in days\n * @param {Number=} aData.hours Duration in hours\n * @param {Number=} aData.minutes Duration in minutes\n * @param {Number=} aData.seconds Duration in seconds\n * @param {Boolean=} aData.isNegative If true, the duration is negative\n * @return {Duration} The createad duration instance\n */\n static fromData(aData) {\n return new Duration(aData);\n }\n\n /**\n * Creates a new ICAL.Duration instance.\n *\n * @param {Object} data An object with members of the duration\n * @param {Number=} data.weeks Duration in weeks\n * @param {Number=} data.days Duration in days\n * @param {Number=} data.hours Duration in hours\n * @param {Number=} data.minutes Duration in minutes\n * @param {Number=} data.seconds Duration in seconds\n * @param {Boolean=} data.isNegative If true, the duration is negative\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.fromData(data);\n }\n\n /**\n * The weeks in this duration\n * @type {Number}\n * @default 0\n */\n weeks = 0;\n\n /**\n * The days in this duration\n * @type {Number}\n * @default 0\n */\n days = 0;\n\n /**\n * The days in this duration\n * @type {Number}\n * @default 0\n */\n hours = 0;\n\n /**\n * The minutes in this duration\n * @type {Number}\n * @default 0\n */\n minutes = 0;\n\n /**\n * The seconds in this duration\n * @type {Number}\n * @default 0\n */\n seconds = 0;\n\n /**\n * The seconds in this duration\n * @type {Boolean}\n * @default false\n */\n isNegative = false;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalduration\"\n */\n icalclass = \"icalduration\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"duration\"\n */\n icaltype = \"duration\";\n\n /**\n * Returns a clone of the duration object.\n *\n * @return {Duration} The cloned object\n */\n clone() {\n return Duration.fromData(this);\n }\n\n /**\n * The duration value expressed as a number of seconds.\n *\n * @return {Number} The duration value in seconds\n */\n toSeconds() {\n let seconds = this.seconds + 60 * this.minutes + 3600 * this.hours +\n 86400 * this.days + 7 * 86400 * this.weeks;\n return (this.isNegative ? -seconds : seconds);\n }\n\n /**\n * Reads the passed seconds value into this duration object. Afterwards,\n * members like {@link ICAL.Duration#days days} and {@link ICAL.Duration#weeks weeks} will be set up\n * accordingly.\n *\n * @param {Number} aSeconds The duration value in seconds\n * @return {Duration} Returns this instance\n */\n fromSeconds(aSeconds) {\n let secs = Math.abs(aSeconds);\n\n this.isNegative = (aSeconds < 0);\n this.days = trunc(secs / 86400);\n\n // If we have a flat number of weeks, use them.\n if (this.days % 7 == 0) {\n this.weeks = this.days / 7;\n this.days = 0;\n } else {\n this.weeks = 0;\n }\n\n secs -= (this.days + 7 * this.weeks) * 86400;\n\n this.hours = trunc(secs / 3600);\n secs -= this.hours * 3600;\n\n this.minutes = trunc(secs / 60);\n secs -= this.minutes * 60;\n\n this.seconds = secs;\n return this;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} aData An object with members of the duration\n * @param {Number=} aData.weeks Duration in weeks\n * @param {Number=} aData.days Duration in days\n * @param {Number=} aData.hours Duration in hours\n * @param {Number=} aData.minutes Duration in minutes\n * @param {Number=} aData.seconds Duration in seconds\n * @param {Boolean=} aData.isNegative If true, the duration is negative\n */\n fromData(aData) {\n for (let prop of DATA_PROPS_TO_COPY) {\n if (aData && prop in aData) {\n this[prop] = aData[prop];\n } else {\n this[prop] = 0;\n }\n }\n }\n\n /**\n * Resets the duration instance to the default values, i.e. PT0S\n */\n reset() {\n this.isNegative = false;\n this.weeks = 0;\n this.days = 0;\n this.hours = 0;\n this.minutes = 0;\n this.seconds = 0;\n }\n\n /**\n * Compares the duration instance with another one.\n *\n * @param {Duration} aOther The instance to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(aOther) {\n let thisSeconds = this.toSeconds();\n let otherSeconds = aOther.toSeconds();\n return (thisSeconds > otherSeconds) - (thisSeconds < otherSeconds);\n }\n\n /**\n * Normalizes the duration instance. For example, a duration with a value\n * of 61 seconds will be normalized to 1 minute and 1 second.\n */\n normalize() {\n this.fromSeconds(this.toSeconds());\n }\n\n /**\n * The string representation of this duration.\n * @return {String}\n */\n toString() {\n if (this.toSeconds() == 0) {\n return \"PT0S\";\n } else {\n let str = \"\";\n if (this.isNegative) str += \"-\";\n str += \"P\";\n let hasWeeks = false;\n if (this.weeks) {\n if (this.days || this.hours || this.minutes || this.seconds) {\n str += (this.weeks * 7 + this.days) + \"D\";\n } else {\n str += (this.weeks + \"W\");\n hasWeeks = true;\n }\n } else if (this.days) {\n str += (this.days + \"D\");\n }\n\n if (!hasWeeks) {\n if (this.hours || this.minutes || this.seconds) {\n str += \"T\";\n if (this.hours) {\n str += this.hours + \"H\";\n }\n\n if (this.minutes) {\n str += this.minutes + \"M\";\n }\n\n if (this.seconds) {\n str += this.seconds + \"S\";\n }\n }\n }\n\n return str;\n }\n }\n\n /**\n * The iCalendar string representation of this duration.\n * @return {String}\n */\n toICALString() {\n return this.toString();\n }\n}\n\n/**\n * Internal helper function to handle a chunk of a duration.\n *\n * @private\n * @param {String} letter type of duration chunk\n * @param {String} number numeric value or -/+\n * @param {Object} dict target to assign values to\n */\nfunction parseDurationChunk(letter, number, object) {\n let type;\n switch (letter) {\n case 'P':\n if (number && number === '-') {\n object.isNegative = true;\n } else {\n object.isNegative = false;\n }\n // period\n break;\n case 'D':\n type = 'days';\n break;\n case 'W':\n type = 'weeks';\n break;\n case 'H':\n type = 'hours';\n break;\n case 'M':\n type = 'minutes';\n break;\n case 'S':\n type = 'seconds';\n break;\n default:\n // Not a valid chunk\n return 0;\n }\n\n if (type) {\n if (!number && number !== 0) {\n throw new Error(\n 'invalid duration value: Missing number before \"' + letter + '\"'\n );\n }\n let num = parseInt(number, 10);\n if (isStrictlyNaN(num)) {\n throw new Error(\n 'invalid duration value: Invalid number \"' + number + '\" before \"' + letter + '\"'\n );\n }\n object[type] = num;\n }\n\n return 1;\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").jCalComponent} jCalComponent\n * Imports the 'occurrenceDetails' type from the \"types.js\" module\n */\n\n/**\n * This class represents the \"period\" value type, with various calculation and manipulation methods.\n *\n * @memberof ICAL\n */\nclass Period {\n /**\n * Creates a new {@link ICAL.Period} instance from the passed string.\n *\n * @param {String} str The string to parse\n * @param {Property} prop The property this period will be on\n * @return {Period} The created period instance\n */\n static fromString(str, prop) {\n let parts = str.split('/');\n\n if (parts.length !== 2) {\n throw new Error(\n 'Invalid string value: \"' + str + '\" must contain a \"/\" char.'\n );\n }\n\n let options = {\n start: Time.fromDateTimeString(parts[0], prop)\n };\n\n let end = parts[1];\n\n if (Duration.isValueString(end)) {\n options.duration = Duration.fromString(end);\n } else {\n options.end = Time.fromDateTimeString(end, prop);\n }\n\n return new Period(options);\n }\n\n /**\n * Creates a new {@link ICAL.Period} instance from the given data object.\n * The passed data object cannot contain both and end date and a duration.\n *\n * @param {Object} aData An object with members of the period\n * @param {Time=} aData.start The start of the period\n * @param {Time=} aData.end The end of the period\n * @param {Duration=} aData.duration The duration of the period\n * @return {Period} The period instance\n */\n static fromData(aData) {\n return new Period(aData);\n }\n\n /**\n * Returns a new period instance from the given jCal data array. The first\n * member is always the start date string, the second member is either a\n * duration or end date string.\n *\n * @param {jCalComponent} aData The jCal data array\n * @param {Property} aProp The property this jCal data is on\n * @param {Boolean} aLenient If true, data value can be both date and date-time\n * @return {Period} The period instance\n */\n static fromJSON(aData, aProp, aLenient) {\n function fromDateOrDateTimeString(aValue, dateProp) {\n if (aLenient) {\n return Time.fromString(aValue, dateProp);\n } else {\n return Time.fromDateTimeString(aValue, dateProp);\n }\n }\n\n if (Duration.isValueString(aData[1])) {\n return Period.fromData({\n start: fromDateOrDateTimeString(aData[0], aProp),\n duration: Duration.fromString(aData[1])\n });\n } else {\n return Period.fromData({\n start: fromDateOrDateTimeString(aData[0], aProp),\n end: fromDateOrDateTimeString(aData[1], aProp)\n });\n }\n }\n\n /**\n * Creates a new ICAL.Period instance. The passed data object cannot contain both and end date and\n * a duration.\n *\n * @param {Object} aData An object with members of the period\n * @param {Time=} aData.start The start of the period\n * @param {Time=} aData.end The end of the period\n * @param {Duration=} aData.duration The duration of the period\n */\n constructor(aData) {\n this.wrappedJSObject = this;\n\n if (aData && 'start' in aData) {\n if (aData.start && !(aData.start instanceof Time)) {\n throw new TypeError('.start must be an instance of ICAL.Time');\n }\n this.start = aData.start;\n }\n\n if (aData && aData.end && aData.duration) {\n throw new Error('cannot accept both end and duration');\n }\n\n if (aData && 'end' in aData) {\n if (aData.end && !(aData.end instanceof Time)) {\n throw new TypeError('.end must be an instance of ICAL.Time');\n }\n this.end = aData.end;\n }\n\n if (aData && 'duration' in aData) {\n if (aData.duration && !(aData.duration instanceof Duration)) {\n throw new TypeError('.duration must be an instance of ICAL.Duration');\n }\n this.duration = aData.duration;\n }\n }\n\n\n /**\n * The start of the period\n * @type {Time}\n */\n start = null;\n\n /**\n * The end of the period\n * @type {Time}\n */\n end = null;\n\n /**\n * The duration of the period\n * @type {Duration}\n */\n duration = null;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalperiod\"\n */\n icalclass = \"icalperiod\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"period\"\n */\n icaltype = \"period\";\n\n /**\n * Returns a clone of the duration object.\n *\n * @return {Period} The cloned object\n */\n clone() {\n return Period.fromData({\n start: this.start ? this.start.clone() : null,\n end: this.end ? this.end.clone() : null,\n duration: this.duration ? this.duration.clone() : null\n });\n }\n\n /**\n * Calculates the duration of the period, either directly or by subtracting\n * start from end date.\n *\n * @return {Duration} The calculated duration\n */\n getDuration() {\n if (this.duration) {\n return this.duration;\n } else {\n return this.end.subtractDate(this.start);\n }\n }\n\n /**\n * Calculates the end date of the period, either directly or by adding\n * duration to start date.\n *\n * @return {Time} The calculated end date\n */\n getEnd() {\n if (this.end) {\n return this.end;\n } else {\n let end = this.start.clone();\n end.addDuration(this.duration);\n return end;\n }\n }\n\n /**\n * Compare this period with a date or other period. To maintain the logic where a.compare(b)\n * returns 1 when a > b, this function will return 1 when the period is after the date, 0 when the\n * date is within the period, and -1 when the period is before the date. When comparing two\n * periods, as soon as they overlap in any way this will return 0.\n *\n * @param {Time|Period} dt The date or other period to compare with\n */\n compare(dt) {\n if (dt.compare(this.start) < 0) {\n return 1;\n } else if (dt.compare(this.getEnd()) > 0) {\n return -1;\n } else {\n return 0;\n }\n }\n\n /**\n * The string representation of this period.\n * @return {String}\n */\n toString() {\n return this.start + \"/\" + (this.end || this.duration);\n }\n\n /**\n * The jCal representation of this period type.\n * @return {Object}\n */\n toJSON() {\n return [this.start.toString(), (this.end || this.duration).toString()];\n }\n\n /**\n * The iCalendar string representation of this period.\n * @return {String}\n */\n toICALString() {\n return this.start.toICALString() + \"/\" +\n (this.end || this.duration).toICALString();\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n *\n * @ignore\n * @typedef {import(\"./types.js\").timeInit} timeInit\n * Imports the 'timeInit' type from the \"types.js\" module\n */\n\n/**\n * @classdesc\n * iCalendar Time representation (similar to JS Date object). Fully\n * independent of system (OS) timezone / time. Unlike JS Date, the month\n * January is 1, not zero.\n *\n * @example\n * var time = new ICAL.Time({\n * year: 2012,\n * month: 10,\n * day: 11\n * minute: 0,\n * second: 0,\n * isDate: false\n * });\n *\n *\n * @memberof ICAL\n*/\nclass Time {\n static _dowCache = {};\n static _wnCache = {};\n\n /**\n * Returns the days in the given month\n *\n * @param {Number} month The month to check\n * @param {Number} year The year to check\n * @return {Number} The number of days in the month\n */\n static daysInMonth(month, year) {\n let _daysInMonth = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n let days = 30;\n\n if (month < 1 || month > 12) return days;\n\n days = _daysInMonth[month];\n\n if (month == 2) {\n days += Time.isLeapYear(year);\n }\n\n return days;\n }\n\n /**\n * Checks if the year is a leap year\n *\n * @param {Number} year The year to check\n * @return {Boolean} True, if the year is a leap year\n */\n static isLeapYear(year) {\n if (year <= 1752) {\n return ((year % 4) == 0);\n } else {\n return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));\n }\n }\n\n /**\n * Create a new ICAL.Time from the day of year and year. The date is returned\n * in floating timezone.\n *\n * @param {Number} aDayOfYear The day of year\n * @param {Number} aYear The year to create the instance in\n * @return {Time} The created instance with the calculated date\n */\n static fromDayOfYear(aDayOfYear, aYear) {\n let year = aYear;\n let doy = aDayOfYear;\n let tt = new Time();\n tt.auto_normalize = false;\n let is_leap = (Time.isLeapYear(year) ? 1 : 0);\n\n if (doy < 1) {\n year--;\n is_leap = (Time.isLeapYear(year) ? 1 : 0);\n doy += Time.daysInYearPassedMonth[is_leap][12];\n return Time.fromDayOfYear(doy, year);\n } else if (doy > Time.daysInYearPassedMonth[is_leap][12]) {\n is_leap = (Time.isLeapYear(year) ? 1 : 0);\n doy -= Time.daysInYearPassedMonth[is_leap][12];\n year++;\n return Time.fromDayOfYear(doy, year);\n }\n\n tt.year = year;\n tt.isDate = true;\n\n for (let month = 11; month >= 0; month--) {\n if (doy > Time.daysInYearPassedMonth[is_leap][month]) {\n tt.month = month + 1;\n tt.day = doy - Time.daysInYearPassedMonth[is_leap][month];\n break;\n }\n }\n\n tt.auto_normalize = true;\n return tt;\n }\n\n /**\n * Returns a new ICAL.Time instance from a date string, e.g 2015-01-02.\n *\n * @deprecated Use {@link ICAL.Time.fromDateString} instead\n * @param {String} str The string to create from\n * @return {Time} The date/time instance\n */\n static fromStringv2(str) {\n return new Time({\n year: parseInt(str.slice(0, 4), 10),\n month: parseInt(str.slice(5, 7), 10),\n day: parseInt(str.slice(8, 10), 10),\n isDate: true\n });\n }\n\n /**\n * Returns a new ICAL.Time instance from a date string, e.g 2015-01-02.\n *\n * @param {String} aValue The string to create from\n * @return {Time} The date/time instance\n */\n static fromDateString(aValue) {\n // Dates should have no timezone.\n // Google likes to sometimes specify Z on dates\n // we specifically ignore that to avoid issues.\n\n // YYYY-MM-DD\n // 2012-10-10\n return new Time({\n year: strictParseInt(aValue.slice(0, 4)),\n month: strictParseInt(aValue.slice(5, 7)),\n day: strictParseInt(aValue.slice(8, 10)),\n isDate: true\n });\n }\n\n /**\n * Returns a new ICAL.Time instance from a date-time string, e.g\n * 2015-01-02T03:04:05. If a property is specified, the timezone is set up\n * from the property's TZID parameter.\n *\n * @param {String} aValue The string to create from\n * @param {Property=} prop The property the date belongs to\n * @return {Time} The date/time instance\n */\n static fromDateTimeString(aValue, prop) {\n if (aValue.length < 19) {\n throw new Error(\n 'invalid date-time value: \"' + aValue + '\"'\n );\n }\n\n let zone;\n let zoneId;\n\n if (aValue.slice(-1) === 'Z') {\n zone = Timezone.utcTimezone;\n } else if (prop) {\n zoneId = prop.getParameter('tzid');\n\n if (prop.parent) {\n if (prop.parent.name === 'standard' || prop.parent.name === 'daylight') {\n // Per RFC 5545 3.8.2.4 and 3.8.2.2, start/end date-times within\n // these components MUST be specified in local time.\n zone = Timezone.localTimezone;\n } else if (zoneId) {\n // If the desired time zone is defined within the component tree,\n // fetch its definition and prefer that.\n zone = prop.parent.getTimeZoneByID(zoneId);\n }\n }\n }\n\n const timeData = {\n year: strictParseInt(aValue.slice(0, 4)),\n month: strictParseInt(aValue.slice(5, 7)),\n day: strictParseInt(aValue.slice(8, 10)),\n hour: strictParseInt(aValue.slice(11, 13)),\n minute: strictParseInt(aValue.slice(14, 16)),\n second: strictParseInt(aValue.slice(17, 19)),\n };\n\n // Although RFC 5545 requires that all TZIDs used within a file have a\n // corresponding time zone definition, we may not be parsing the full file\n // or we may be dealing with a non-compliant file; in either case, we can\n // check our own time zone service for the TZID in a last-ditch effort.\n if (zoneId && !zone) {\n timeData.timezone = zoneId;\n }\n\n // 2012-10-10T10:10:10(Z)?\n return new Time(timeData, zone);\n }\n\n /**\n * Returns a new ICAL.Time instance from a date or date-time string,\n *\n * @param {String} aValue The string to create from\n * @param {Property=} prop The property the date belongs to\n * @return {Time} The date/time instance\n */\n static fromString(aValue, aProperty) {\n if (aValue.length > 10) {\n return Time.fromDateTimeString(aValue, aProperty);\n } else {\n return Time.fromDateString(aValue);\n }\n }\n\n /**\n * Creates a new ICAL.Time instance from the given Javascript Date.\n *\n * @param {?Date} aDate The Javascript Date to read, or null to reset\n * @param {Boolean} [useUTC=false] If true, the UTC values of the date will be used\n */\n static fromJSDate(aDate, useUTC) {\n let tt = new Time();\n return tt.fromJSDate(aDate, useUTC);\n }\n\n /**\n * Creates a new ICAL.Time instance from the the passed data object.\n *\n * @param {timeInit} aData Time initialization\n * @param {Timezone=} aZone Timezone this position occurs in\n */\n static fromData = function fromData(aData, aZone) {\n let t = new Time();\n return t.fromData(aData, aZone);\n };\n\n /**\n * Creates a new ICAL.Time instance from the current moment.\n * The instance is “floating” - has no timezone relation.\n * To create an instance considering the time zone, call\n * ICAL.Time.fromJSDate(new Date(), true)\n * @return {Time}\n */\n static now() {\n return Time.fromJSDate(new Date(), false);\n }\n\n /**\n * Returns the date on which ISO week number 1 starts.\n *\n * @see Time#weekNumber\n * @param {Number} aYear The year to search in\n * @param {weekDay=} aWeekStart The week start weekday, used for calculation.\n * @return {Time} The date on which week number 1 starts\n */\n static weekOneStarts(aYear, aWeekStart) {\n let t = Time.fromData({\n year: aYear,\n month: 1,\n day: 1,\n isDate: true\n });\n\n let dow = t.dayOfWeek();\n let wkst = aWeekStart || Time.DEFAULT_WEEK_START;\n if (dow > Time.THURSDAY) {\n t.day += 7;\n }\n if (wkst > Time.THURSDAY) {\n t.day -= 7;\n }\n\n t.day -= dow - wkst;\n\n return t;\n }\n\n /**\n * Get the dominical letter for the given year. Letters range from A - G for\n * common years, and AG to GF for leap years.\n *\n * @param {Number} yr The year to retrieve the letter for\n * @return {String} The dominical letter.\n */\n static getDominicalLetter(yr) {\n let LTRS = \"GFEDCBA\";\n let dom = (yr + (yr / 4 | 0) + (yr / 400 | 0) - (yr / 100 | 0) - 1) % 7;\n let isLeap = Time.isLeapYear(yr);\n if (isLeap) {\n return LTRS[(dom + 6) % 7] + LTRS[dom];\n } else {\n return LTRS[dom];\n }\n }\n\n static #epochTime = null;\n /**\n * January 1st, 1970 as an ICAL.Time.\n * @type {Time}\n * @constant\n * @instance\n */\n static get epochTime() {\n if (!this.#epochTime) {\n this.#epochTime = Time.fromData({\n year: 1970,\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n isDate: false,\n timezone: \"Z\"\n });\n }\n return this.#epochTime;\n }\n\n static _cmp_attr(a, b, attr) {\n if (a[attr] > b[attr]) return 1;\n if (a[attr] < b[attr]) return -1;\n return 0;\n }\n\n /**\n * The days that have passed in the year after a given month. The array has\n * two members, one being an array of passed days for non-leap years, the\n * other analog for leap years.\n * @example\n * var isLeapYear = ICAL.Time.isLeapYear(year);\n * var passedDays = ICAL.Time.daysInYearPassedMonth[isLeapYear][month];\n * @type {Array.>}\n */\n static daysInYearPassedMonth = [\n [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365],\n [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366]\n ];\n\n static SUNDAY = 1;\n static MONDAY = 2;\n static TUESDAY = 3;\n static WEDNESDAY = 4;\n static THURSDAY = 5;\n static FRIDAY = 6;\n static SATURDAY = 7;\n\n /**\n * The default weekday for the WKST part.\n * @constant\n * @default ICAL.Time.MONDAY\n */\n static DEFAULT_WEEK_START = 2; // MONDAY\n\n /**\n * Creates a new ICAL.Time instance.\n *\n * @param {timeInit} data Time initialization\n * @param {Timezone} zone timezone this position occurs in\n */\n constructor(data, zone) {\n this.wrappedJSObject = this;\n\n /**\n * @type {timeInit}\n * @private\n */\n this._time = Object.create(null);\n\n /* time defaults */\n this._time.year = 0;\n this._time.month = 1;\n this._time.day = 1;\n this._time.hour = 0;\n this._time.minute = 0;\n this._time.second = 0;\n this._time.isDate = false;\n\n this.fromData(data, zone);\n }\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icaltime\"\n */\n icalclass = \"icaltime\";\n _cachedUnixTime = null;\n\n /**\n * The type name, to be used in the jCal object. This value may change and\n * is strictly defined by the {@link ICAL.Time#isDate isDate} member.\n * @type {String}\n * @default \"date-time\"\n */\n get icaltype() {\n return this.isDate ? 'date' : 'date-time';\n }\n\n /**\n * The timezone for this time.\n * @type {Timezone}\n */\n zone = null;\n\n /**\n * Internal uses to indicate that a change has been made and the next read\n * operation must attempt to normalize the value (for example changing the\n * day to 33).\n *\n * @type {Boolean}\n * @private\n */\n _pendingNormalization = false;\n\n /**\n * The year of this date.\n * @type {Number}\n */\n get year() {\n return this._getTimeAttr('year');\n }\n\n set year(val) {\n this._setTimeAttr('year', val);\n }\n\n /**\n * The month of this date.\n * @type {Number}\n */\n get month() {\n return this._getTimeAttr('month');\n }\n\n set month(val) {\n this._setTimeAttr('month', val);\n }\n\n /**\n * The day of this date.\n * @type {Number}\n */\n get day() {\n return this._getTimeAttr('day');\n }\n\n set day(val) {\n this._setTimeAttr('day', val);\n }\n\n /**\n * The hour of this date-time.\n * @type {Number}\n */\n get hour() {\n return this._getTimeAttr('hour');\n }\n\n set hour(val) {\n this._setTimeAttr('hour', val);\n }\n\n /**\n * The minute of this date-time.\n * @type {Number}\n */\n get minute() {\n return this._getTimeAttr('minute');\n }\n\n set minute(val) {\n this._setTimeAttr('minute', val);\n }\n\n /**\n * The second of this date-time.\n * @type {Number}\n */\n get second() {\n return this._getTimeAttr('second');\n }\n\n set second(val) {\n this._setTimeAttr('second', val);\n }\n\n /**\n * If true, the instance represents a date (as opposed to a date-time)\n * @type {Boolean}\n */\n get isDate() {\n return this._getTimeAttr('isDate');\n }\n\n set isDate(val) {\n this._setTimeAttr('isDate', val);\n }\n\n /**\n * @private\n * @param {String} attr Attribute to get (one of: year, month,\n * day, hour, minute, second, isDate)\n * @return {Number|Boolean} Current value for the attribute\n */\n _getTimeAttr(attr) {\n if (this._pendingNormalization) {\n this._normalize();\n this._pendingNormalization = false;\n }\n\n return this._time[attr];\n }\n\n /**\n * @private\n * @param {String} attr Attribute to set (one of: year, month,\n * day, hour, minute, second, isDate)\n * @param {Number|Boolean} val New value for the attribute\n */\n _setTimeAttr(attr, val) {\n // Check if isDate will be set and if was not set to normalize date.\n // This avoids losing days when seconds, minutes and hours are zeroed\n // what normalize will do when time is a date.\n if (attr === \"isDate\" && val && !this._time.isDate) {\n this.adjust(0, 0, 0, 0);\n }\n this._cachedUnixTime = null;\n this._pendingNormalization = true;\n this._time[attr] = val;\n }\n\n /**\n * Returns a clone of the time object.\n *\n * @return {Time} The cloned object\n */\n clone() {\n return new Time(this._time, this.zone);\n }\n\n /**\n * Reset the time instance to epoch time\n */\n reset() {\n this.fromData(Time.epochTime);\n this.zone = Timezone.utcTimezone;\n }\n\n /**\n * Reset the time instance to the given date/time values.\n *\n * @param {Number} year The year to set\n * @param {Number} month The month to set\n * @param {Number} day The day to set\n * @param {Number} hour The hour to set\n * @param {Number} minute The minute to set\n * @param {Number} second The second to set\n * @param {Timezone} timezone The timezone to set\n */\n resetTo(year, month, day, hour, minute, second, timezone) {\n this.fromData({\n year: year,\n month: month,\n day: day,\n hour: hour,\n minute: minute,\n second: second,\n zone: timezone\n });\n }\n\n /**\n * Set up the current instance from the Javascript date value.\n *\n * @param {?Date} aDate The Javascript Date to read, or null to reset\n * @param {Boolean} [useUTC=false] If true, the UTC values of the date will be used\n */\n fromJSDate(aDate, useUTC) {\n if (!aDate) {\n this.reset();\n } else {\n if (useUTC) {\n this.zone = Timezone.utcTimezone;\n this.year = aDate.getUTCFullYear();\n this.month = aDate.getUTCMonth() + 1;\n this.day = aDate.getUTCDate();\n this.hour = aDate.getUTCHours();\n this.minute = aDate.getUTCMinutes();\n this.second = aDate.getUTCSeconds();\n } else {\n this.zone = Timezone.localTimezone;\n this.year = aDate.getFullYear();\n this.month = aDate.getMonth() + 1;\n this.day = aDate.getDate();\n this.hour = aDate.getHours();\n this.minute = aDate.getMinutes();\n this.second = aDate.getSeconds();\n }\n }\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {timeInit} aData Time initialization\n * @param {Timezone=} aZone Timezone this position occurs in\n */\n fromData(aData, aZone) {\n if (aData) {\n for (let [key, value] of Object.entries(aData)) {\n // ical type cannot be set\n if (key === 'icaltype') continue;\n this[key] = value;\n }\n }\n\n if (aZone) {\n this.zone = aZone;\n }\n\n if (aData && !(\"isDate\" in aData)) {\n this.isDate = !(\"hour\" in aData);\n } else if (aData && (\"isDate\" in aData)) {\n this.isDate = aData.isDate;\n }\n\n if (aData && \"timezone\" in aData) {\n let zone = TimezoneService.get(\n aData.timezone\n );\n\n this.zone = zone || Timezone.localTimezone;\n }\n\n if (aData && \"zone\" in aData) {\n this.zone = aData.zone;\n }\n\n if (!this.zone) {\n this.zone = Timezone.localTimezone;\n }\n\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Calculate the day of week.\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {weekDay}\n */\n dayOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let dowCacheKey = (this.year << 12) + (this.month << 8) + (this.day << 3) + firstDow;\n if (dowCacheKey in Time._dowCache) {\n return Time._dowCache[dowCacheKey];\n }\n\n // Using Zeller's algorithm\n let q = this.day;\n let m = this.month + (this.month < 3 ? 12 : 0);\n let Y = this.year - (this.month < 3 ? 1 : 0);\n\n let h = (q + Y + trunc(((m + 1) * 26) / 10) + trunc(Y / 4));\n { // eslint-disable-line no-constant-condition\n h += trunc(Y / 100) * 6 + trunc(Y / 400);\n }\n\n // Normalize to 1 = wkst\n h = ((h + 7 - firstDow) % 7) + 1;\n Time._dowCache[dowCacheKey] = h;\n return h;\n }\n\n /**\n * Calculate the day of year.\n * @return {Number}\n */\n dayOfYear() {\n let is_leap = (Time.isLeapYear(this.year) ? 1 : 0);\n let diypm = Time.daysInYearPassedMonth;\n return diypm[is_leap][this.month - 1] + this.day;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * week. The resulting ICAL.Time instance is of icaltype date, even if this\n * is a date-time.\n *\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Time} The start of the week (cloned)\n */\n startOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let result = this.clone();\n result.day -= ((this.dayOfWeek() + 7 - firstDow) % 7);\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the week.\n * The resulting ICAL.Time instance is of icaltype date, even if this is a\n * date-time.\n *\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Time} The end of the week (cloned)\n */\n endOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let result = this.clone();\n result.day += (7 - this.dayOfWeek() + firstDow - Time.SUNDAY) % 7;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * month. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The start of the month (cloned)\n */\n startOfMonth() {\n let result = this.clone();\n result.day = 1;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the\n * month. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The end of the month (cloned)\n */\n endOfMonth() {\n let result = this.clone();\n result.day = Time.daysInMonth(result.month, result.year);\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * year. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The start of the year (cloned)\n */\n startOfYear() {\n let result = this.clone();\n result.day = 1;\n result.month = 1;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the\n * year. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The end of the year (cloned)\n */\n endOfYear() {\n let result = this.clone();\n result.day = 31;\n result.month = 12;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * First calculates the start of the week, then returns the day of year for\n * this date. If the day falls into the previous year, the day is zero or negative.\n *\n * @param {weekDay=} aFirstDayOfWeek\n * The week start weekday, defaults to SUNDAY\n * @return {Number} The calculated day of year\n */\n startDoyWeek(aFirstDayOfWeek) {\n let firstDow = aFirstDayOfWeek || Time.SUNDAY;\n let delta = this.dayOfWeek() - firstDow;\n if (delta < 0) delta += 7;\n return this.dayOfYear() - delta;\n }\n\n /**\n * Get the dominical letter for the current year. Letters range from A - G\n * for common years, and AG to GF for leap years.\n *\n * @param {Number} yr The year to retrieve the letter for\n * @return {String} The dominical letter.\n */\n getDominicalLetter() {\n return Time.getDominicalLetter(this.year);\n }\n\n /**\n * Finds the nthWeekDay relative to the current month (not day). The\n * returned value is a day relative the month that this month belongs to so\n * 1 would indicate the first of the month and 40 would indicate a day in\n * the following month.\n *\n * @param {Number} aDayOfWeek Day of the week see the day name constants\n * @param {Number} aPos Nth occurrence of a given week day values\n * of 1 and 0 both indicate the first weekday of that type. aPos may\n * be either positive or negative\n *\n * @return {Number} numeric value indicating a day relative\n * to the current month of this time object\n */\n nthWeekDay(aDayOfWeek, aPos) {\n let daysInMonth = Time.daysInMonth(this.month, this.year);\n let weekday;\n let pos = aPos;\n\n let start = 0;\n\n let otherDay = this.clone();\n\n if (pos >= 0) {\n otherDay.day = 1;\n\n // because 0 means no position has been given\n // 1 and 0 indicate the same day.\n if (pos != 0) {\n // remove the extra numeric value\n pos--;\n }\n\n // set current start offset to current day.\n start = otherDay.day;\n\n // find the current day of week\n let startDow = otherDay.dayOfWeek();\n\n // calculate the difference between current\n // day of the week and desired day of the week\n let offset = aDayOfWeek - startDow;\n\n\n // if the offset goes into the past\n // week we add 7 so it goes into the next\n // week. We only want to go forward in time here.\n if (offset < 0)\n // this is really important otherwise we would\n // end up with dates from in the past.\n offset += 7;\n\n // add offset to start so start is the same\n // day of the week as the desired day of week.\n start += offset;\n\n // because we are going to add (and multiply)\n // the numeric value of the day we subtract it\n // from the start position so not to add it twice.\n start -= aDayOfWeek;\n\n // set week day\n weekday = aDayOfWeek;\n } else {\n\n // then we set it to the last day in the current month\n otherDay.day = daysInMonth;\n\n // find the ends weekday\n let endDow = otherDay.dayOfWeek();\n\n pos++;\n\n weekday = (endDow - aDayOfWeek);\n\n if (weekday < 0) {\n weekday += 7;\n }\n\n weekday = daysInMonth - weekday;\n }\n\n weekday += pos * 7;\n\n return start + weekday;\n }\n\n /**\n * Checks if current time is the nth weekday, relative to the current\n * month. Will always return false when rule resolves outside of current\n * month.\n *\n * @param {weekDay} aDayOfWeek Day of week to check\n * @param {Number} aPos Relative position\n * @return {Boolean} True, if it is the nth weekday\n */\n isNthWeekDay(aDayOfWeek, aPos) {\n let dow = this.dayOfWeek();\n\n if (aPos === 0 && dow === aDayOfWeek) {\n return true;\n }\n\n // get pos\n let day = this.nthWeekDay(aDayOfWeek, aPos);\n\n if (day === this.day) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Calculates the ISO 8601 week number. The first week of a year is the\n * week that contains the first Thursday. The year can have 53 weeks, if\n * January 1st is a Friday.\n *\n * Note there are regions where the first week of the year is the one that\n * starts on January 1st, which may offset the week number. Also, if a\n * different week start is specified, this will also affect the week\n * number.\n *\n * @see Time.weekOneStarts\n * @param {weekDay} aWeekStart The weekday the week starts with\n * @return {Number} The ISO week number\n */\n weekNumber(aWeekStart) {\n let wnCacheKey = (this.year << 12) + (this.month << 8) + (this.day << 3) + aWeekStart;\n if (wnCacheKey in Time._wnCache) {\n return Time._wnCache[wnCacheKey];\n }\n // This function courtesty of Julian Bucknall, published under the MIT license\n // http://www.boyet.com/articles/publishedarticles/calculatingtheisoweeknumb.html\n // plus some fixes to be able to use different week starts.\n let week1;\n\n let dt = this.clone();\n dt.isDate = true;\n let isoyear = this.year;\n\n if (dt.month == 12 && dt.day > 25) {\n week1 = Time.weekOneStarts(isoyear + 1, aWeekStart);\n if (dt.compare(week1) < 0) {\n week1 = Time.weekOneStarts(isoyear, aWeekStart);\n } else {\n isoyear++;\n }\n } else {\n week1 = Time.weekOneStarts(isoyear, aWeekStart);\n if (dt.compare(week1) < 0) {\n week1 = Time.weekOneStarts(--isoyear, aWeekStart);\n }\n }\n\n let daysBetween = (dt.subtractDate(week1).toSeconds() / 86400);\n let answer = trunc(daysBetween / 7) + 1;\n Time._wnCache[wnCacheKey] = answer;\n return answer;\n }\n\n /**\n * Adds the duration to the current time. The instance is modified in\n * place.\n *\n * @param {Duration} aDuration The duration to add\n */\n addDuration(aDuration) {\n let mult = (aDuration.isNegative ? -1 : 1);\n\n // because of the duration optimizations it is much\n // more efficient to grab all the values up front\n // then set them directly (which will avoid a normalization call).\n // So we don't actually normalize until we need it.\n let second = this.second;\n let minute = this.minute;\n let hour = this.hour;\n let day = this.day;\n\n second += mult * aDuration.seconds;\n minute += mult * aDuration.minutes;\n hour += mult * aDuration.hours;\n day += mult * aDuration.days;\n day += mult * 7 * aDuration.weeks;\n\n this.second = second;\n this.minute = minute;\n this.hour = hour;\n this.day = day;\n\n this._cachedUnixTime = null;\n }\n\n /**\n * Subtract the date details (_excluding_ timezone). Useful for finding\n * the relative difference between two time objects excluding their\n * timezone differences.\n *\n * @param {Time} aDate The date to subtract\n * @return {Duration} The difference as a duration\n */\n subtractDate(aDate) {\n let unixTime = this.toUnixTime() + this.utcOffset();\n let other = aDate.toUnixTime() + aDate.utcOffset();\n return Duration.fromSeconds(unixTime - other);\n }\n\n /**\n * Subtract the date details, taking timezones into account.\n *\n * @param {Time} aDate The date to subtract\n * @return {Duration} The difference in duration\n */\n subtractDateTz(aDate) {\n let unixTime = this.toUnixTime();\n let other = aDate.toUnixTime();\n return Duration.fromSeconds(unixTime - other);\n }\n\n /**\n * Compares the ICAL.Time instance with another one, or a period.\n *\n * @param {Time|Period} aOther The instance to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(other) {\n if (other instanceof Period) {\n return -1 * other.compare(this);\n } else {\n let a = this.toUnixTime();\n let b = other.toUnixTime();\n\n if (a > b) return 1;\n if (b > a) return -1;\n return 0;\n }\n }\n\n /**\n * Compares only the date part of this instance with another one.\n *\n * @param {Time} other The instance to compare with\n * @param {Timezone} tz The timezone to compare in\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compareDateOnlyTz(other, tz) {\n let a = this.convertToZone(tz);\n let b = other.convertToZone(tz);\n let rc = 0;\n\n if ((rc = Time._cmp_attr(a, b, \"year\")) != 0) return rc;\n if ((rc = Time._cmp_attr(a, b, \"month\")) != 0) return rc;\n if ((rc = Time._cmp_attr(a, b, \"day\")) != 0) return rc;\n\n return rc;\n }\n\n /**\n * Convert the instance into another timezone. The returned ICAL.Time\n * instance is always a copy.\n *\n * @param {Timezone} zone The zone to convert to\n * @return {Time} The copy, converted to the zone\n */\n convertToZone(zone) {\n let copy = this.clone();\n let zone_equals = (this.zone.tzid == zone.tzid);\n\n if (!this.isDate && !zone_equals) {\n Timezone.convert_time(copy, this.zone, zone);\n }\n\n copy.zone = zone;\n return copy;\n }\n\n /**\n * Calculates the UTC offset of the current date/time in the timezone it is\n * in.\n *\n * @return {Number} UTC offset in seconds\n */\n utcOffset() {\n if (this.zone == Timezone.localTimezone ||\n this.zone == Timezone.utcTimezone) {\n return 0;\n } else {\n return this.zone.utcOffset(this);\n }\n }\n\n /**\n * Returns an RFC 5545 compliant ical representation of this object.\n *\n * @return {String} ical date/date-time\n */\n toICALString() {\n let string = this.toString();\n\n if (string.length > 10) {\n return design.icalendar.value['date-time'].toICAL(string);\n } else {\n return design.icalendar.value.date.toICAL(string);\n }\n }\n\n /**\n * The string representation of this date/time, in jCal form\n * (including : and - separators).\n * @return {String}\n */\n toString() {\n let result = this.year + '-' +\n pad2(this.month) + '-' +\n pad2(this.day);\n\n if (!this.isDate) {\n result += 'T' + pad2(this.hour) + ':' +\n pad2(this.minute) + ':' +\n pad2(this.second);\n\n if (this.zone === Timezone.utcTimezone) {\n result += 'Z';\n }\n }\n\n return result;\n }\n\n /**\n * Converts the current instance to a Javascript date\n * @return {Date}\n */\n toJSDate() {\n if (this.zone == Timezone.localTimezone) {\n if (this.isDate) {\n return new Date(this.year, this.month - 1, this.day);\n } else {\n return new Date(this.year, this.month - 1, this.day,\n this.hour, this.minute, this.second, 0);\n }\n } else {\n return new Date(this.toUnixTime() * 1000);\n }\n }\n\n _normalize() {\n if (this._time.isDate) {\n this._time.hour = 0;\n this._time.minute = 0;\n this._time.second = 0;\n }\n this.adjust(0, 0, 0, 0);\n\n return this;\n }\n\n /**\n * Adjust the date/time by the given offset\n *\n * @param {Number} aExtraDays The extra amount of days\n * @param {Number} aExtraHours The extra amount of hours\n * @param {Number} aExtraMinutes The extra amount of minutes\n * @param {Number} aExtraSeconds The extra amount of seconds\n * @param {Number=} aTime The time to adjust, defaults to the\n * current instance.\n */\n adjust(aExtraDays, aExtraHours, aExtraMinutes, aExtraSeconds, aTime) {\n\n let minutesOverflow, hoursOverflow,\n daysOverflow = 0, yearsOverflow = 0;\n\n let second, minute, hour, day;\n let daysInMonth;\n\n let time = aTime || this._time;\n\n if (!time.isDate) {\n second = time.second + aExtraSeconds;\n time.second = second % 60;\n minutesOverflow = trunc(second / 60);\n if (time.second < 0) {\n time.second += 60;\n minutesOverflow--;\n }\n\n minute = time.minute + aExtraMinutes + minutesOverflow;\n time.minute = minute % 60;\n hoursOverflow = trunc(minute / 60);\n if (time.minute < 0) {\n time.minute += 60;\n hoursOverflow--;\n }\n\n hour = time.hour + aExtraHours + hoursOverflow;\n\n time.hour = hour % 24;\n daysOverflow = trunc(hour / 24);\n if (time.hour < 0) {\n time.hour += 24;\n daysOverflow--;\n }\n }\n\n\n // Adjust month and year first, because we need to know what month the day\n // is in before adjusting it.\n if (time.month > 12) {\n yearsOverflow = trunc((time.month - 1) / 12);\n } else if (time.month < 1) {\n yearsOverflow = trunc(time.month / 12) - 1;\n }\n\n time.year += yearsOverflow;\n time.month -= 12 * yearsOverflow;\n\n // Now take care of the days (and adjust month if needed)\n day = time.day + aExtraDays + daysOverflow;\n\n if (day > 0) {\n for (;;) {\n daysInMonth = Time.daysInMonth(time.month, time.year);\n if (day <= daysInMonth) {\n break;\n }\n\n time.month++;\n if (time.month > 12) {\n time.year++;\n time.month = 1;\n }\n\n day -= daysInMonth;\n }\n } else {\n while (day <= 0) {\n if (time.month == 1) {\n time.year--;\n time.month = 12;\n } else {\n time.month--;\n }\n\n day += Time.daysInMonth(time.month, time.year);\n }\n }\n\n time.day = day;\n\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Sets up the current instance from unix time, the number of seconds since\n * January 1st, 1970.\n *\n * @param {Number} seconds The seconds to set up with\n */\n fromUnixTime(seconds) {\n this.zone = Timezone.utcTimezone;\n // We could use `fromJSDate` here, but this is about twice as fast.\n // We could also clone `epochTime` and use `adjust` for a more\n // ical.js-centric approach, but this is about 100 times as fast.\n let date = new Date(seconds * 1000);\n this.year = date.getUTCFullYear();\n this.month = date.getUTCMonth() + 1;\n this.day = date.getUTCDate();\n if (this._time.isDate) {\n this.hour = 0;\n this.minute = 0;\n this.second = 0;\n } else {\n this.hour = date.getUTCHours();\n this.minute = date.getUTCMinutes();\n this.second = date.getUTCSeconds();\n }\n\n this._cachedUnixTime = null;\n }\n\n /**\n * Converts the current instance to seconds since January 1st 1970.\n *\n * @return {Number} Seconds since 1970\n */\n toUnixTime() {\n if (this._cachedUnixTime !== null) {\n return this._cachedUnixTime;\n }\n let offset = this.utcOffset();\n\n // we use the offset trick to ensure\n // that we are getting the actual UTC time\n let ms = Date.UTC(\n this.year,\n this.month - 1,\n this.day,\n this.hour,\n this.minute,\n this.second - offset\n );\n\n // seconds\n this._cachedUnixTime = ms / 1000;\n return this._cachedUnixTime;\n }\n\n /**\n * Converts time to into Object which can be serialized then re-created\n * using the constructor.\n *\n * @example\n * // toJSON will automatically be called\n * var json = JSON.stringify(mytime);\n *\n * var deserialized = JSON.parse(json);\n *\n * var time = new ICAL.Time(deserialized);\n *\n * @return {Object}\n */\n toJSON() {\n let copy = [\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'isDate'\n ];\n\n let result = Object.create(null);\n\n let i = 0;\n let len = copy.length;\n let prop;\n\n for (; i < len; i++) {\n prop = copy[i];\n result[prop] = this[prop];\n }\n\n if (this.zone) {\n result.timezone = this.zone.tzid;\n }\n\n return result;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").parserState} parserState\n * Imports the 'parserState' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\nconst CHAR = /[^ \\t]/;\nconst VALUE_DELIMITER = ':';\nconst PARAM_DELIMITER = ';';\nconst PARAM_NAME_DELIMITER = '=';\nconst DEFAULT_VALUE_TYPE$1 = 'unknown';\nconst DEFAULT_PARAM_TYPE = 'text';\nconst RFC6868_REPLACE_MAP$1 = { \"^'\": '\"', \"^n\": \"\\n\", \"^^\": \"^\" };\n\n/**\n * Parses iCalendar or vCard data into a raw jCal object. Consult\n * documentation on the {@tutorial layers|layers of parsing} for more\n * details.\n *\n * @function ICAL.parse\n * @memberof ICAL\n * @variation function\n * @todo Fix the API to be more clear on the return type\n * @param {String} input The string data to parse\n * @return {Object|Object[]} A single jCal object, or an array thereof\n */\nfunction parse(input) {\n let state = {};\n let root = state.component = [];\n\n state.stack = [root];\n\n parse._eachLine(input, function(err, line) {\n parse._handleContentLine(line, state);\n });\n\n\n // when there are still items on the stack\n // throw a fatal error, a component was not closed\n // correctly in that case.\n if (state.stack.length > 1) {\n throw new ParserError(\n 'invalid ical body. component began but did not end'\n );\n }\n\n state = null;\n\n return (root.length == 1 ? root[0] : root);\n}\n\n/**\n * Parse an iCalendar property value into the jCal for a single property\n *\n * @function ICAL.parse.property\n * @param {String} str\n * The iCalendar property string to parse\n * @param {designSet=} designSet\n * The design data to use for this property\n * @return {Object}\n * The jCal Object containing the property\n */\nparse.property = function(str, designSet) {\n let state = {\n component: [[], []],\n designSet: designSet || design.defaultSet\n };\n parse._handleContentLine(str, state);\n return state.component[1][0];\n};\n\n/**\n * Convenience method to parse a component. You can use ICAL.parse() directly\n * instead.\n *\n * @function ICAL.parse.component\n * @see ICAL.parse(function)\n * @param {String} str The iCalendar component string to parse\n * @return {Object} The jCal Object containing the component\n */\nparse.component = function(str) {\n return parse(str);\n};\n\n\n/**\n * An error that occurred during parsing.\n *\n * @param {String} message The error message\n * @memberof ICAL.parse\n * @extends {Error}\n */\nclass ParserError extends Error {\n name = this.constructor.name;\n}\n\n// classes & constants\nparse.ParserError = ParserError;\n\n\n/**\n * Handles a single line of iCalendar/vCard, updating the state.\n *\n * @private\n * @function ICAL.parse._handleContentLine\n * @param {String} line The content line to process\n * @param {parserState} state The current state of the line parsing\n */\nparse._handleContentLine = function(line, state) {\n // break up the parts of the line\n let valuePos = line.indexOf(VALUE_DELIMITER);\n let paramPos = line.indexOf(PARAM_DELIMITER);\n\n let lastParamIndex;\n let lastValuePos;\n\n // name of property or begin/end\n let name;\n let value;\n // params is only overridden if paramPos !== -1.\n // we can't do params = params || {} later on\n // because it sacrifices ops.\n let params = {};\n\n /**\n * Different property cases\n *\n *\n * 1. RRULE:FREQ=foo\n * // FREQ= is not a param but the value\n *\n * 2. ATTENDEE;ROLE=REQ-PARTICIPANT;\n * // ROLE= is a param because : has not happened yet\n */\n // when the parameter delimiter is after the\n // value delimiter then it is not a parameter.\n\n if ((paramPos !== -1 && valuePos !== -1)) {\n // when the parameter delimiter is after the\n // value delimiter then it is not a parameter.\n if (paramPos > valuePos) {\n paramPos = -1;\n }\n }\n\n let parsedParams;\n if (paramPos !== -1) {\n name = line.slice(0, Math.max(0, paramPos)).toLowerCase();\n parsedParams = parse._parseParameters(line.slice(Math.max(0, paramPos)), 0, state.designSet);\n if (parsedParams[2] == -1) {\n throw new ParserError(\"Invalid parameters in '\" + line + \"'\");\n }\n params = parsedParams[0];\n // Handle parameter values with multiple entries\n let parsedParamLength;\n if (typeof parsedParams[1] === 'string') {\n parsedParamLength = parsedParams[1].length;\n } else {\n parsedParamLength = parsedParams[1].reduce((accumulator, currentValue) => {\n return accumulator + currentValue.length;\n }, 0);\n }\n lastParamIndex = parsedParamLength + parsedParams[2] + paramPos;\n if ((lastValuePos =\n line.slice(Math.max(0, lastParamIndex)).indexOf(VALUE_DELIMITER)) !== -1) {\n value = line.slice(Math.max(0, lastParamIndex + lastValuePos + 1));\n } else {\n throw new ParserError(\"Missing parameter value in '\" + line + \"'\");\n }\n } else if (valuePos !== -1) {\n // without parmeters (BEGIN:VCAENDAR, CLASS:PUBLIC)\n name = line.slice(0, Math.max(0, valuePos)).toLowerCase();\n value = line.slice(Math.max(0, valuePos + 1));\n\n if (name === 'begin') {\n let newComponent = [value.toLowerCase(), [], []];\n if (state.stack.length === 1) {\n state.component.push(newComponent);\n } else {\n state.component[2].push(newComponent);\n }\n state.stack.push(state.component);\n state.component = newComponent;\n if (!state.designSet) {\n state.designSet = design.getDesignSet(state.component[0]);\n }\n return;\n } else if (name === 'end') {\n state.component = state.stack.pop();\n return;\n }\n // If it is not begin/end, then this is a property with an empty value,\n // which should be considered valid.\n } else {\n /**\n * Invalid line.\n * The rational to throw an error is we will\n * never be certain that the rest of the file\n * is sane and it is unlikely that we can serialize\n * the result correctly either.\n */\n throw new ParserError(\n 'invalid line (no token \";\" or \":\") \"' + line + '\"'\n );\n }\n\n let valueType;\n let multiValue = false;\n let structuredValue = false;\n let propertyDetails;\n let splitName;\n let ungroupedName;\n\n // fetch the ungrouped part of the name\n if (state.designSet.propertyGroups && name.indexOf('.') !== -1) {\n splitName = name.split('.');\n params.group = splitName[0];\n ungroupedName = splitName[1];\n } else {\n ungroupedName = name;\n }\n\n if (ungroupedName in state.designSet.property) {\n propertyDetails = state.designSet.property[ungroupedName];\n\n if ('multiValue' in propertyDetails) {\n multiValue = propertyDetails.multiValue;\n }\n\n if ('structuredValue' in propertyDetails) {\n structuredValue = propertyDetails.structuredValue;\n }\n\n if (value && 'detectType' in propertyDetails) {\n valueType = propertyDetails.detectType(value);\n }\n }\n\n // attempt to determine value\n if (!valueType) {\n if (!('value' in params)) {\n if (propertyDetails) {\n valueType = propertyDetails.defaultType;\n } else {\n valueType = DEFAULT_VALUE_TYPE$1;\n }\n } else {\n // possible to avoid this?\n valueType = params.value.toLowerCase();\n }\n }\n\n delete params.value;\n\n /**\n * Note on `var result` juggling:\n *\n * I observed that building the array in pieces has adverse\n * effects on performance, so where possible we inline the creation.\n * It is a little ugly but resulted in ~2000 additional ops/sec.\n */\n\n let result;\n if (multiValue && structuredValue) {\n value = parse._parseMultiValue(value, structuredValue, valueType, [], multiValue, state.designSet, structuredValue);\n result = [ungroupedName, params, valueType, value];\n } else if (multiValue) {\n result = [ungroupedName, params, valueType];\n parse._parseMultiValue(value, multiValue, valueType, result, null, state.designSet, false);\n } else if (structuredValue) {\n value = parse._parseMultiValue(value, structuredValue, valueType, [], null, state.designSet, structuredValue);\n result = [ungroupedName, params, valueType, value];\n } else {\n value = parse._parseValue(value, valueType, state.designSet, false);\n result = [ungroupedName, params, valueType, value];\n }\n // rfc6350 requires that in vCard 4.0 the first component is the VERSION\n // component with as value 4.0, note that 3.0 does not have this requirement.\n if (state.component[0] === 'vcard' && state.component[1].length === 0 &&\n !(name === 'version' && value === '4.0')) {\n state.designSet = design.getDesignSet(\"vcard3\");\n }\n state.component[1].push(result);\n};\n\n/**\n * Parse a value from the raw value into the jCard/jCal value.\n *\n * @private\n * @function ICAL.parse._parseValue\n * @param {String} value Original value\n * @param {String} type Type of value\n * @param {Object} designSet The design data to use for this value\n * @return {Object} varies on type\n */\nparse._parseValue = function(value, type, designSet, structuredValue) {\n if (type in designSet.value && 'fromICAL' in designSet.value[type]) {\n return designSet.value[type].fromICAL(value, structuredValue);\n }\n return value;\n};\n\n/**\n * Parse parameters from a string to object.\n *\n * @function ICAL.parse._parseParameters\n * @private\n * @param {String} line A single unfolded line\n * @param {Number} start Position to start looking for properties\n * @param {Object} designSet The design data to use for this property\n * @return {Array} Array containing key/valye pairs of parsed parameters, the\n * parsed value, and the position of the last parameter found\n */\nparse._parseParameters = function(line, start, designSet) {\n let lastParam = start;\n let pos = 0;\n let delim = PARAM_NAME_DELIMITER;\n let result = {};\n let name, lcname;\n let value, valuePos = -1;\n let type, multiValue, mvdelim;\n\n // find the next '=' sign\n // use lastParam and pos to find name\n // check if \" is used if so get value from \"->\"\n // then increment pos to find next ;\n\n while ((pos !== false) &&\n (pos = line.indexOf(delim, pos + 1)) !== -1) {\n\n name = line.slice(lastParam + 1, pos);\n if (name.length == 0) {\n throw new ParserError(\"Empty parameter name in '\" + line + \"'\");\n }\n lcname = name.toLowerCase();\n mvdelim = false;\n multiValue = false;\n\n if (lcname in designSet.param && designSet.param[lcname].valueType) {\n type = designSet.param[lcname].valueType;\n } else {\n type = DEFAULT_PARAM_TYPE;\n }\n\n if (lcname in designSet.param) {\n multiValue = designSet.param[lcname].multiValue;\n if (designSet.param[lcname].multiValueSeparateDQuote) {\n mvdelim = parse._rfc6868Escape('\"' + multiValue + '\"');\n }\n }\n\n let nextChar = line[pos + 1];\n if (nextChar === '\"') {\n valuePos = pos + 2;\n pos = line.indexOf('\"', valuePos);\n if (multiValue && pos != -1) {\n let extendedValue = true;\n while (extendedValue) {\n if (line[pos + 1] == multiValue && line[pos + 2] == '\"') {\n pos = line.indexOf('\"', pos + 3);\n } else {\n extendedValue = false;\n }\n }\n }\n if (pos === -1) {\n throw new ParserError(\n 'invalid line (no matching double quote) \"' + line + '\"'\n );\n }\n value = line.slice(valuePos, pos);\n lastParam = line.indexOf(PARAM_DELIMITER, pos);\n let propValuePos = line.indexOf(VALUE_DELIMITER, pos);\n // if either no next parameter or delimeter in property value, let's stop here\n if (lastParam === -1 || (propValuePos !== -1 && lastParam > propValuePos)) {\n pos = false;\n }\n } else {\n valuePos = pos + 1;\n\n // move to next \";\"\n let nextPos = line.indexOf(PARAM_DELIMITER, valuePos);\n let propValuePos = line.indexOf(VALUE_DELIMITER, valuePos);\n if (propValuePos !== -1 && nextPos > propValuePos) {\n // this is a delimiter in the property value, let's stop here\n nextPos = propValuePos;\n pos = false;\n } else if (nextPos === -1) {\n // no \";\"\n if (propValuePos === -1) {\n nextPos = line.length;\n } else {\n nextPos = propValuePos;\n }\n pos = false;\n } else {\n lastParam = nextPos;\n pos = nextPos;\n }\n\n value = line.slice(valuePos, nextPos);\n }\n\n const length_before = value.length;\n value = parse._rfc6868Escape(value);\n valuePos += length_before - value.length;\n if (multiValue) {\n let delimiter = mvdelim || multiValue;\n value = parse._parseMultiValue(value, delimiter, type, [], null, designSet);\n } else {\n value = parse._parseValue(value, type, designSet);\n }\n\n if (multiValue && (lcname in result)) {\n if (Array.isArray(result[lcname])) {\n result[lcname].push(value);\n } else {\n result[lcname] = [\n result[lcname],\n value\n ];\n }\n } else {\n result[lcname] = value;\n }\n }\n return [result, value, valuePos];\n};\n\n/**\n * Internal helper for rfc6868. Exposing this on ICAL.parse so that\n * hackers can disable the rfc6868 parsing if the really need to.\n *\n * @function ICAL.parse._rfc6868Escape\n * @param {String} val The value to escape\n * @return {String} The escaped value\n */\nparse._rfc6868Escape = function(val) {\n return val.replace(/\\^['n^]/g, function(x) {\n return RFC6868_REPLACE_MAP$1[x];\n });\n};\n\n/**\n * Parse a multi value string. This function is used either for parsing\n * actual multi-value property's values, or for handling parameter values. It\n * can be used for both multi-value properties and structured value properties.\n *\n * @private\n * @function ICAL.parse._parseMultiValue\n * @param {String} buffer The buffer containing the full value\n * @param {String} delim The multi-value delimiter\n * @param {String} type The value type to be parsed\n * @param {Array.} result The array to append results to, varies on value type\n * @param {String} innerMulti The inner delimiter to split each value with\n * @param {designSet} designSet The design data for this value\n * @return {?|Array.} Either an array of results, or the first result\n */\nparse._parseMultiValue = function(buffer, delim, type, result, innerMulti, designSet, structuredValue) {\n let pos = 0;\n let lastPos = 0;\n let value;\n if (delim.length === 0) {\n return buffer;\n }\n\n // split each piece\n while ((pos = unescapedIndexOf(buffer, delim, lastPos)) !== -1) {\n value = buffer.slice(lastPos, pos);\n if (innerMulti) {\n value = parse._parseMultiValue(value, innerMulti, type, [], null, designSet, structuredValue);\n } else {\n value = parse._parseValue(value, type, designSet, structuredValue);\n }\n result.push(value);\n lastPos = pos + delim.length;\n }\n\n // on the last piece take the rest of string\n value = buffer.slice(lastPos);\n if (innerMulti) {\n value = parse._parseMultiValue(value, innerMulti, type, [], null, designSet, structuredValue);\n } else {\n value = parse._parseValue(value, type, designSet, structuredValue);\n }\n result.push(value);\n\n return result.length == 1 ? result[0] : result;\n};\n\n/**\n * Process a complete buffer of iCalendar/vCard data line by line, correctly\n * unfolding content. Each line will be processed with the given callback\n *\n * @private\n * @function ICAL.parse._eachLine\n * @param {String} buffer The buffer to process\n * @param {function(?String, String)} callback The callback for each line\n */\nparse._eachLine = function(buffer, callback) {\n let len = buffer.length;\n let lastPos = buffer.search(CHAR);\n let pos = lastPos;\n let line;\n let firstChar;\n\n let newlineOffset;\n\n do {\n pos = buffer.indexOf('\\n', lastPos) + 1;\n\n if (pos > 1 && buffer[pos - 2] === '\\r') {\n newlineOffset = 2;\n } else {\n newlineOffset = 1;\n }\n\n if (pos === 0) {\n pos = len;\n newlineOffset = 0;\n }\n\n firstChar = buffer[lastPos];\n\n if (firstChar === ' ' || firstChar === '\\t') {\n // add to line\n line += buffer.slice(lastPos + 1, pos - newlineOffset);\n } else {\n if (line)\n callback(null, line);\n // push line\n line = buffer.slice(lastPos, pos - newlineOffset);\n }\n\n lastPos = pos;\n } while (pos !== len);\n\n // extra ending line\n line = line.trim();\n\n if (line.length)\n callback(null, line);\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nconst OPTIONS = [\"tzid\", \"location\", \"tznames\", \"latitude\", \"longitude\"];\n\n/**\n * Timezone representation.\n *\n * @example\n * var vcalendar;\n * var timezoneComp = vcalendar.getFirstSubcomponent('vtimezone');\n * var tzid = timezoneComp.getFirstPropertyValue('tzid');\n *\n * var timezone = new ICAL.Timezone({\n * component: timezoneComp,\n * tzid\n * });\n *\n * @memberof ICAL\n */\nclass Timezone {\n static _compare_change_fn(a, b) {\n if (a.year < b.year) return -1;\n else if (a.year > b.year) return 1;\n\n if (a.month < b.month) return -1;\n else if (a.month > b.month) return 1;\n\n if (a.day < b.day) return -1;\n else if (a.day > b.day) return 1;\n\n if (a.hour < b.hour) return -1;\n else if (a.hour > b.hour) return 1;\n\n if (a.minute < b.minute) return -1;\n else if (a.minute > b.minute) return 1;\n\n if (a.second < b.second) return -1;\n else if (a.second > b.second) return 1;\n\n return 0;\n }\n\n /**\n * Convert the date/time from one zone to the next.\n *\n * @param {Time} tt The time to convert\n * @param {Timezone} from_zone The source zone to convert from\n * @param {Timezone} to_zone The target zone to convert to\n * @return {Time} The converted date/time object\n */\n static convert_time(tt, from_zone, to_zone) {\n if (tt.isDate ||\n from_zone.tzid == to_zone.tzid ||\n from_zone == Timezone.localTimezone ||\n to_zone == Timezone.localTimezone) {\n tt.zone = to_zone;\n return tt;\n }\n\n let utcOffset = from_zone.utcOffset(tt);\n tt.adjust(0, 0, 0, - utcOffset);\n\n utcOffset = to_zone.utcOffset(tt);\n tt.adjust(0, 0, 0, utcOffset);\n\n return null;\n }\n\n /**\n * Creates a new ICAL.Timezone instance from the passed data object.\n *\n * @param {Component|Object} aData options for class\n * @param {String|Component} aData.component\n * If aData is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} aData.tzid The timezone identifier\n * @param {String} aData.location The timezone locationw\n * @param {String} aData.tznames An alternative string representation of the\n * timezone\n * @param {Number} aData.latitude The latitude of the timezone\n * @param {Number} aData.longitude The longitude of the timezone\n */\n static fromData(aData) {\n let tt = new Timezone();\n return tt.fromData(aData);\n }\n\n /**\n * The instance describing the UTC timezone\n * @type {Timezone}\n * @constant\n * @instance\n */\n static #utcTimezone = null;\n static get utcTimezone() {\n if (!this.#utcTimezone) {\n this.#utcTimezone = Timezone.fromData({\n tzid: \"UTC\"\n });\n }\n return this.#utcTimezone;\n }\n\n /**\n * The instance describing the local timezone\n * @type {Timezone}\n * @constant\n * @instance\n */\n static #localTimezone = null;\n static get localTimezone() {\n if (!this.#localTimezone) {\n this.#localTimezone = Timezone.fromData({\n tzid: \"floating\"\n });\n }\n return this.#localTimezone;\n }\n\n /**\n * Adjust a timezone change object.\n * @private\n * @param {Object} change The timezone change object\n * @param {Number} days The extra amount of days\n * @param {Number} hours The extra amount of hours\n * @param {Number} minutes The extra amount of minutes\n * @param {Number} seconds The extra amount of seconds\n */\n static adjust_change(change, days, hours, minutes, seconds) {\n return Time.prototype.adjust.call(\n change,\n days,\n hours,\n minutes,\n seconds,\n change\n );\n }\n\n static _minimumExpansionYear = -1;\n static EXTRA_COVERAGE = 5;\n\n /**\n * Creates a new ICAL.Timezone instance, by passing in a tzid and component.\n *\n * @param {Component|Object} data options for class\n * @param {String|Component} data.component\n * If data is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} data.tzid The timezone identifier\n * @param {String} data.location The timezone locationw\n * @param {String} data.tznames An alternative string representation of the\n * timezone\n * @param {Number} data.latitude The latitude of the timezone\n * @param {Number} data.longitude The longitude of the timezone\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.fromData(data);\n }\n\n\n /**\n * Timezone identifier\n * @type {String}\n */\n tzid = \"\";\n\n /**\n * Timezone location\n * @type {String}\n */\n location = \"\";\n\n /**\n * Alternative timezone name, for the string representation\n * @type {String}\n */\n tznames = \"\";\n\n /**\n * The primary latitude for the timezone.\n * @type {Number}\n */\n latitude = 0.0;\n\n /**\n * The primary longitude for the timezone.\n * @type {Number}\n */\n longitude = 0.0;\n\n /**\n * The vtimezone component for this timezone.\n * @type {Component}\n */\n component = null;\n\n /**\n * The year this timezone has been expanded to. All timezone transition\n * dates until this year are known and can be used for calculation\n *\n * @private\n * @type {Number}\n */\n expandedUntilYear = 0;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icaltimezone\"\n */\n icalclass = \"icaltimezone\";\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Component|Object} aData options for class\n * @param {String|Component} aData.component\n * If aData is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} aData.tzid The timezone identifier\n * @param {String} aData.location The timezone locationw\n * @param {String} aData.tznames An alternative string representation of the\n * timezone\n * @param {Number} aData.latitude The latitude of the timezone\n * @param {Number} aData.longitude The longitude of the timezone\n */\n fromData(aData) {\n this.expandedUntilYear = 0;\n this.changes = [];\n\n if (aData instanceof Component) {\n // Either a component is passed directly\n this.component = aData;\n } else {\n // Otherwise the component may be in the data object\n if (aData && \"component\" in aData) {\n if (typeof aData.component == \"string\") {\n // If a string was passed, parse it as a component\n let jCal = parse(aData.component);\n this.component = new Component(jCal);\n } else if (aData.component instanceof Component) {\n // If it was a component already, then just set it\n this.component = aData.component;\n } else {\n // Otherwise just null out the component\n this.component = null;\n }\n }\n\n // Copy remaining passed properties\n for (let prop of OPTIONS) {\n if (aData && prop in aData) {\n this[prop] = aData[prop];\n }\n }\n }\n\n // If we have a component but no TZID, attempt to get it from the\n // component's properties.\n if (this.component instanceof Component && !this.tzid) {\n this.tzid = this.component.getFirstPropertyValue('tzid');\n }\n\n return this;\n }\n\n /**\n * Finds the utcOffset the given time would occur in this timezone.\n *\n * @param {Time} tt The time to check for\n * @return {Number} utc offset in seconds\n */\n utcOffset(tt) {\n if (this == Timezone.utcTimezone || this == Timezone.localTimezone) {\n return 0;\n }\n\n this._ensureCoverage(tt.year);\n\n if (!this.changes.length) {\n return 0;\n }\n\n let tt_change = {\n year: tt.year,\n month: tt.month,\n day: tt.day,\n hour: tt.hour,\n minute: tt.minute,\n second: tt.second\n };\n\n let change_num = this._findNearbyChange(tt_change);\n let change_num_to_use = -1;\n let step = 1;\n\n // TODO: replace with bin search?\n for (;;) {\n let change = clone(this.changes[change_num], true);\n if (change.utcOffset < change.prevUtcOffset) {\n Timezone.adjust_change(change, 0, 0, 0, change.utcOffset);\n } else {\n Timezone.adjust_change(change, 0, 0, 0,\n change.prevUtcOffset);\n }\n\n let cmp = Timezone._compare_change_fn(tt_change, change);\n\n if (cmp >= 0) {\n change_num_to_use = change_num;\n } else {\n step = -1;\n }\n\n if (step == -1 && change_num_to_use != -1) {\n break;\n }\n\n change_num += step;\n\n if (change_num < 0) {\n return 0;\n }\n\n if (change_num >= this.changes.length) {\n break;\n }\n }\n\n let zone_change = this.changes[change_num_to_use];\n let utcOffset_change = zone_change.utcOffset - zone_change.prevUtcOffset;\n\n if (utcOffset_change < 0 && change_num_to_use > 0) {\n let tmp_change = clone(zone_change, true);\n Timezone.adjust_change(tmp_change, 0, 0, 0, tmp_change.prevUtcOffset);\n\n if (Timezone._compare_change_fn(tt_change, tmp_change) < 0) {\n let prev_zone_change = this.changes[change_num_to_use - 1];\n\n let want_daylight = false; // TODO\n\n if (zone_change.is_daylight != want_daylight &&\n prev_zone_change.is_daylight == want_daylight) {\n zone_change = prev_zone_change;\n }\n }\n }\n\n // TODO return is_daylight?\n return zone_change.utcOffset;\n }\n\n _findNearbyChange(change) {\n // find the closest match\n let idx = binsearchInsert(\n this.changes,\n change,\n Timezone._compare_change_fn\n );\n\n if (idx >= this.changes.length) {\n return this.changes.length - 1;\n }\n\n return idx;\n }\n\n _ensureCoverage(aYear) {\n if (Timezone._minimumExpansionYear == -1) {\n let today = Time.now();\n Timezone._minimumExpansionYear = today.year;\n }\n\n let changesEndYear = aYear;\n if (changesEndYear < Timezone._minimumExpansionYear) {\n changesEndYear = Timezone._minimumExpansionYear;\n }\n\n changesEndYear += Timezone.EXTRA_COVERAGE;\n\n if (!this.changes.length || this.expandedUntilYear < aYear) {\n let subcomps = this.component.getAllSubcomponents();\n let compLen = subcomps.length;\n let compIdx = 0;\n\n for (; compIdx < compLen; compIdx++) {\n this._expandComponent(\n subcomps[compIdx], changesEndYear, this.changes\n );\n }\n\n this.changes.sort(Timezone._compare_change_fn);\n this.expandedUntilYear = changesEndYear;\n }\n }\n\n _expandComponent(aComponent, aYear, changes) {\n if (!aComponent.hasProperty(\"dtstart\") ||\n !aComponent.hasProperty(\"tzoffsetto\") ||\n !aComponent.hasProperty(\"tzoffsetfrom\")) {\n return null;\n }\n\n let dtstart = aComponent.getFirstProperty(\"dtstart\").getFirstValue();\n let change;\n\n function convert_tzoffset(offset) {\n return offset.factor * (offset.hours * 3600 + offset.minutes * 60);\n }\n\n function init_changes() {\n let changebase = {};\n changebase.is_daylight = (aComponent.name == \"daylight\");\n changebase.utcOffset = convert_tzoffset(\n aComponent.getFirstProperty(\"tzoffsetto\").getFirstValue()\n );\n\n changebase.prevUtcOffset = convert_tzoffset(\n aComponent.getFirstProperty(\"tzoffsetfrom\").getFirstValue()\n );\n\n return changebase;\n }\n\n if (!aComponent.hasProperty(\"rrule\") && !aComponent.hasProperty(\"rdate\")) {\n change = init_changes();\n change.year = dtstart.year;\n change.month = dtstart.month;\n change.day = dtstart.day;\n change.hour = dtstart.hour;\n change.minute = dtstart.minute;\n change.second = dtstart.second;\n\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n changes.push(change);\n } else {\n let props = aComponent.getAllProperties(\"rdate\");\n for (let rdate of props) {\n let time = rdate.getFirstValue();\n change = init_changes();\n\n change.year = time.year;\n change.month = time.month;\n change.day = time.day;\n\n if (time.isDate) {\n change.hour = dtstart.hour;\n change.minute = dtstart.minute;\n change.second = dtstart.second;\n\n if (dtstart.zone != Timezone.utcTimezone) {\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n }\n } else {\n change.hour = time.hour;\n change.minute = time.minute;\n change.second = time.second;\n\n if (time.zone != Timezone.utcTimezone) {\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n }\n }\n\n changes.push(change);\n }\n\n let rrule = aComponent.getFirstProperty(\"rrule\");\n\n if (rrule) {\n rrule = rrule.getFirstValue();\n change = init_changes();\n\n if (rrule.until && rrule.until.zone == Timezone.utcTimezone) {\n rrule.until.adjust(0, 0, 0, change.prevUtcOffset);\n rrule.until.zone = Timezone.localTimezone;\n }\n\n let iterator = rrule.iterator(dtstart);\n\n let occ;\n while ((occ = iterator.next())) {\n change = init_changes();\n if (occ.year > aYear || !occ) {\n break;\n }\n\n change.year = occ.year;\n change.month = occ.month;\n change.day = occ.day;\n change.hour = occ.hour;\n change.minute = occ.minute;\n change.second = occ.second;\n change.isDate = occ.isDate;\n\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n changes.push(change);\n }\n }\n }\n\n return changes;\n }\n\n /**\n * The string representation of this timezone.\n * @return {String}\n */\n toString() {\n return (this.tznames ? this.tznames : this.tzid);\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nlet zones = null;\n\n/**\n * @classdesc\n * Singleton class to contain timezones. Right now it is all manual registry in\n * the future we may use this class to download timezone information or handle\n * loading pre-expanded timezones.\n *\n * @exports module:ICAL.TimezoneService\n * @memberof ICAL\n */\nconst TimezoneService = {\n get count() {\n if (zones === null) {\n return 0;\n }\n\n return Object.keys(zones).length;\n },\n\n reset: function() {\n zones = Object.create(null);\n let utc = Timezone.utcTimezone;\n\n zones.Z = utc;\n zones.UTC = utc;\n zones.GMT = utc;\n },\n _hard_reset: function() {\n zones = null;\n },\n\n /**\n * Checks if timezone id has been registered.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {Boolean} False, when not present\n */\n has: function(tzid) {\n if (zones === null) {\n return false;\n }\n\n return !!zones[tzid];\n },\n\n /**\n * Returns a timezone by its tzid if present.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {Timezone | undefined} The timezone, or undefined if not found\n */\n get: function(tzid) {\n if (zones === null) {\n this.reset();\n }\n\n return zones[tzid];\n },\n\n /**\n * Registers a timezone object or component.\n *\n * @param {Component|Timezone} timezone\n * The initialized zone or vtimezone.\n *\n * @param {String=} name\n * The name of the timezone. Defaults to the component's TZID if not\n * passed.\n */\n register: function(timezone, name) {\n if (zones === null) {\n this.reset();\n }\n\n // This avoids a breaking change by the change of argument order\n // TODO remove in v3\n if (typeof timezone === \"string\" && name instanceof Timezone) {\n [timezone, name] = [name, timezone];\n }\n\n if (!name) {\n if (timezone instanceof Timezone) {\n name = timezone.tzid;\n } else {\n if (timezone.name === 'vtimezone') {\n timezone = new Timezone(timezone);\n name = timezone.tzid;\n }\n }\n }\n\n if (!name) {\n throw new TypeError(\"Neither a timezone nor a name was passed\");\n }\n\n if (timezone instanceof Timezone) {\n zones[name] = timezone;\n } else {\n throw new TypeError('timezone must be ICAL.Timezone or ICAL.Component');\n }\n },\n\n /**\n * Removes a timezone by its tzid from the list.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {?Timezone} The removed timezone, or null if not registered\n */\n remove: function(tzid) {\n if (zones === null) {\n return null;\n }\n\n return (delete zones[tzid]);\n }\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Helper functions used in various places within ical.js\n * @module ICAL.helpers\n */\n\n/**\n * Compiles a list of all referenced TZIDs in all subcomponents and\n * removes any extra VTIMEZONE subcomponents. In addition, if any TZIDs\n * are referenced by a component, but a VTIMEZONE does not exist,\n * an attempt will be made to generate a VTIMEZONE using ICAL.TimezoneService.\n *\n * @param {Component} vcal The top-level VCALENDAR component.\n * @return {Component} The ICAL.Component that was passed in.\n */\nfunction updateTimezones(vcal) {\n let allsubs, properties, vtimezones, reqTzid, i;\n\n if (!vcal || vcal.name !== \"vcalendar\") {\n //not a top-level vcalendar component\n return vcal;\n }\n\n //Store vtimezone subcomponents in an object reference by tzid.\n //Store properties from everything else in another array\n allsubs = vcal.getAllSubcomponents();\n properties = [];\n vtimezones = {};\n for (i = 0; i < allsubs.length; i++) {\n if (allsubs[i].name === \"vtimezone\") {\n let tzid = allsubs[i].getFirstProperty(\"tzid\").getFirstValue();\n vtimezones[tzid] = allsubs[i];\n } else {\n properties = properties.concat(allsubs[i].getAllProperties());\n }\n }\n\n //create an object with one entry for each required tz\n reqTzid = {};\n for (i = 0; i < properties.length; i++) {\n let tzid = properties[i].getParameter(\"tzid\");\n if (tzid) {\n reqTzid[tzid] = true;\n }\n }\n\n //delete any vtimezones that are not on the reqTzid list.\n for (let [tzid, comp] of Object.entries(vtimezones)) {\n if (!reqTzid[tzid]) {\n vcal.removeSubcomponent(comp);\n }\n }\n\n //create any missing, but registered timezones\n for (let tzid of Object.keys(reqTzid)) {\n if (!vtimezones[tzid] && TimezoneService.has(tzid)) {\n vcal.addSubcomponent(TimezoneService.get(tzid).component);\n }\n }\n\n return vcal;\n}\n\n/**\n * Checks if the given type is of the number type and also NaN.\n *\n * @param {Number} number The number to check\n * @return {Boolean} True, if the number is strictly NaN\n */\nfunction isStrictlyNaN(number) {\n return typeof(number) === 'number' && isNaN(number);\n}\n\n/**\n * Parses a string value that is expected to be an integer, when the valid is\n * not an integer throws a decoration error.\n *\n * @param {String} string Raw string input\n * @return {Number} Parsed integer\n */\nfunction strictParseInt(string) {\n let result = parseInt(string, 10);\n\n if (isStrictlyNaN(result)) {\n throw new Error(\n 'Could not extract integer from \"' + string + '\"'\n );\n }\n\n return result;\n}\n\n/**\n * Creates or returns a class instance of a given type with the initialization\n * data if the data is not already an instance of the given type.\n *\n * @example\n * var time = new ICAL.Time(...);\n * var result = ICAL.helpers.formatClassType(time, ICAL.Time);\n *\n * (result instanceof ICAL.Time)\n * // => true\n *\n * result = ICAL.helpers.formatClassType({}, ICAL.Time);\n * (result isntanceof ICAL.Time)\n * // => true\n *\n *\n * @param {Object} data object initialization data\n * @param {Object} type object type (like ICAL.Time)\n * @return {?} An instance of the found type.\n */\nfunction formatClassType(data, type) {\n if (typeof(data) === 'undefined') {\n return undefined;\n }\n\n if (data instanceof type) {\n return data;\n }\n return new type(data);\n}\n\n/**\n * Identical to indexOf but will only match values when they are not preceded\n * by a backslash character.\n *\n * @param {String} buffer String to search\n * @param {String} search Value to look for\n * @param {Number} pos Start position\n * @return {Number} The position, or -1 if not found\n */\nfunction unescapedIndexOf(buffer, search, pos) {\n while ((pos = buffer.indexOf(search, pos)) !== -1) {\n if (pos > 0 && buffer[pos - 1] === '\\\\') {\n pos += 1;\n } else {\n return pos;\n }\n }\n return -1;\n}\n\n/**\n * Find the index for insertion using binary search.\n *\n * @param {Array} list The list to search\n * @param {?} seekVal The value to insert\n * @param {function(?,?)} cmpfunc The comparison func, that can\n * compare two seekVals\n * @return {Number} The insert position\n */\nfunction binsearchInsert(list, seekVal, cmpfunc) {\n if (!list.length)\n return 0;\n\n let low = 0, high = list.length - 1,\n mid, cmpval;\n\n while (low <= high) {\n mid = low + Math.floor((high - low) / 2);\n cmpval = cmpfunc(seekVal, list[mid]);\n\n if (cmpval < 0)\n high = mid - 1;\n else if (cmpval > 0)\n low = mid + 1;\n else\n break;\n }\n\n if (cmpval < 0)\n return mid; // insertion is displacing, so use mid outright.\n else if (cmpval > 0)\n return mid + 1;\n else\n return mid;\n}\n\n/**\n * Clone the passed object or primitive. By default a shallow clone will be\n * executed.\n *\n * @param {*} aSrc The thing to clone\n * @param {Boolean=} aDeep If true, a deep clone will be performed\n * @return {*} The copy of the thing\n */\nfunction clone(aSrc, aDeep) {\n if (!aSrc || typeof aSrc != \"object\") {\n return aSrc;\n } else if (aSrc instanceof Date) {\n return new Date(aSrc.getTime());\n } else if (\"clone\" in aSrc) {\n return aSrc.clone();\n } else if (Array.isArray(aSrc)) {\n let arr = [];\n for (let i = 0; i < aSrc.length; i++) {\n arr.push(aDeep ? clone(aSrc[i], true) : aSrc[i]);\n }\n return arr;\n } else {\n let obj = {};\n for (let [name, value] of Object.entries(aSrc)) {\n if (aDeep) {\n obj[name] = clone(value, true);\n } else {\n obj[name] = value;\n }\n }\n return obj;\n }\n}\n\n/**\n * Performs iCalendar line folding. A line ending character is inserted and\n * the next line begins with a whitespace.\n *\n * @example\n * SUMMARY:This line will be fold\n * ed right in the middle of a word.\n *\n * @param {String} aLine The line to fold\n * @return {String} The folded line\n */\nfunction foldline(aLine) {\n let result = \"\";\n let line = aLine || \"\", pos = 0, line_length = 0;\n //pos counts position in line for the UTF-16 presentation\n //line_length counts the bytes for the UTF-8 presentation\n while (line.length) {\n let cp = line.codePointAt(pos);\n if (cp < 128) ++line_length;\n else if (cp < 2048) line_length += 2;//needs 2 UTF-8 bytes\n else if (cp < 65536) line_length += 3;\n else line_length += 4; //cp is less than 1114112\n if (line_length < ICALmodule.foldLength + 1)\n pos += cp > 65535 ? 2 : 1;\n else {\n result += ICALmodule.newLineChar + \" \" + line.slice(0, Math.max(0, pos));\n line = line.slice(Math.max(0, pos));\n pos = line_length = 0;\n }\n }\n return result.slice(ICALmodule.newLineChar.length + 1);\n}\n\n/**\n * Pads the given string or number with zeros so it will have at least two\n * characters.\n *\n * @param {String|Number} data The string or number to pad\n * @return {String} The number padded as a string\n */\nfunction pad2(data) {\n if (typeof(data) !== 'string') {\n // handle fractions.\n if (typeof(data) === 'number') {\n data = parseInt(data);\n }\n data = String(data);\n }\n\n let len = data.length;\n\n switch (len) {\n case 0:\n return '00';\n case 1:\n return '0' + data;\n default:\n return data;\n }\n}\n\n/**\n * Truncates the given number, correctly handling negative numbers.\n *\n * @param {Number} number The number to truncate\n * @return {Number} The truncated number\n */\nfunction trunc(number) {\n return (number < 0 ? Math.ceil(number) : Math.floor(number));\n}\n\n/**\n * Poor-man's cross-browser object extension. Doesn't support all the\n * features, but enough for our usage. Note that the target's properties are\n * not overwritten with the source properties.\n *\n * @example\n * var child = ICAL.helpers.extend(parent, {\n * \"bar\": 123\n * });\n *\n * @param {Object} source The object to extend\n * @param {Object} target The object to extend with\n * @return {Object} Returns the target.\n */\nfunction extend(source, target) {\n for (let key in source) {\n let descr = Object.getOwnPropertyDescriptor(source, key);\n if (descr && !Object.getOwnPropertyDescriptor(target, key)) {\n Object.defineProperty(target, key, descr);\n }\n }\n return target;\n}\n\nvar helpers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n binsearchInsert: binsearchInsert,\n clone: clone,\n extend: extend,\n foldline: foldline,\n formatClassType: formatClassType,\n isStrictlyNaN: isStrictlyNaN,\n pad2: pad2,\n strictParseInt: strictParseInt,\n trunc: trunc,\n unescapedIndexOf: unescapedIndexOf,\n updateTimezones: updateTimezones\n});\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This class represents the \"utc-offset\" value type, with various calculation and manipulation\n * methods.\n *\n * @memberof ICAL\n */\nclass UtcOffset {\n /**\n * Creates a new {@link ICAL.UtcOffset} instance from the passed string.\n *\n * @param {String} aString The string to parse\n * @return {Duration} The created utc-offset instance\n */\n static fromString(aString) {\n // -05:00\n let options = {};\n //TODO: support seconds per rfc5545 ?\n options.factor = (aString[0] === '+') ? 1 : -1;\n options.hours = strictParseInt(aString.slice(1, 3));\n options.minutes = strictParseInt(aString.slice(4, 6));\n\n return new UtcOffset(options);\n }\n\n /**\n * Creates a new {@link ICAL.UtcOffset} instance from the passed seconds\n * value.\n *\n * @param {Number} aSeconds The number of seconds to convert\n */\n static fromSeconds(aSeconds) {\n let instance = new UtcOffset();\n instance.fromSeconds(aSeconds);\n return instance;\n }\n\n /**\n * Creates a new ICAL.UtcOffset instance.\n *\n * @param {Object} aData An object with members of the utc offset\n * @param {Number=} aData.hours The hours for the utc offset\n * @param {Number=} aData.minutes The minutes in the utc offset\n * @param {Number=} aData.factor The factor for the utc-offset, either -1 or 1\n */\n constructor(aData) {\n this.fromData(aData);\n }\n\n /**\n * The hours in the utc-offset\n * @type {Number}\n */\n hours = 0;\n\n /**\n * The minutes in the utc-offset\n * @type {Number}\n */\n minutes = 0;\n\n /**\n * The sign of the utc offset, 1 for positive offset, -1 for negative\n * offsets.\n * @type {Number}\n */\n factor = 1;\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"utc-offset\"\n */\n icaltype = \"utc-offset\";\n\n /**\n * Returns a clone of the utc offset object.\n *\n * @return {UtcOffset} The cloned object\n */\n clone() {\n return UtcOffset.fromSeconds(this.toSeconds());\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} aData An object with members of the utc offset\n * @param {Number=} aData.hours The hours for the utc offset\n * @param {Number=} aData.minutes The minutes in the utc offset\n * @param {Number=} aData.factor The factor for the utc-offset, either -1 or 1\n */\n fromData(aData) {\n if (aData) {\n for (let [key, value] of Object.entries(aData)) {\n this[key] = value;\n }\n }\n this._normalize();\n }\n\n /**\n * Sets up the current instance from the given seconds value. The seconds\n * value is truncated to the minute. Offsets are wrapped when the world\n * ends, the hour after UTC+14:00 is UTC-12:00.\n *\n * @param {Number} aSeconds The seconds to convert into an offset\n */\n fromSeconds(aSeconds) {\n let secs = Math.abs(aSeconds);\n\n this.factor = aSeconds < 0 ? -1 : 1;\n this.hours = trunc(secs / 3600);\n\n secs -= (this.hours * 3600);\n this.minutes = trunc(secs / 60);\n return this;\n }\n\n /**\n * Convert the current offset to a value in seconds\n *\n * @return {Number} The offset in seconds\n */\n toSeconds() {\n return this.factor * (60 * this.minutes + 3600 * this.hours);\n }\n\n /**\n * Compare this utc offset with another one.\n *\n * @param {UtcOffset} other The other offset to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(other) {\n let a = this.toSeconds();\n let b = other.toSeconds();\n return (a > b) - (b > a);\n }\n\n _normalize() {\n // Range: 97200 seconds (with 1 hour inbetween)\n let secs = this.toSeconds();\n let factor = this.factor;\n while (secs < -43200) { // = UTC-12:00\n secs += 97200;\n }\n while (secs > 50400) { // = UTC+14:00\n secs -= 97200;\n }\n\n this.fromSeconds(secs);\n\n // Avoid changing the factor when on zero seconds\n if (secs == 0) {\n this.factor = factor;\n }\n }\n\n /**\n * The iCalendar string representation of this utc-offset.\n * @return {String}\n */\n toICALString() {\n return design.icalendar.value['utc-offset'].toICAL(this.toString());\n }\n\n /**\n * The string representation of this utc-offset.\n * @return {String}\n */\n toString() {\n return (this.factor == 1 ? \"+\" : \"-\") + pad2(this.hours) + ':' + pad2(this.minutes);\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Describes a vCard time, which has slight differences to the ICAL.Time.\n * Properties can be null if not specified, for example for dates with\n * reduced accuracy or truncation.\n *\n * Note that currently not all methods are correctly re-implemented for\n * VCardTime. For example, comparison will have undefined results when some\n * members are null.\n *\n * Also, normalization is not yet implemented for this class!\n *\n * @memberof ICAL\n * @extends {Time}\n */\nclass VCardTime extends Time {\n /**\n * Returns a new ICAL.VCardTime instance from a date and/or time string.\n *\n * @param {String} aValue The string to create from\n * @param {String} aIcalType The type for this instance, e.g. date-and-or-time\n * @return {VCardTime} The date/time instance\n */\n static fromDateAndOrTimeString(aValue, aIcalType) {\n function part(v, s, e) {\n return v ? strictParseInt(v.slice(s, s + e)) : null;\n }\n let parts = aValue.split('T');\n let dt = parts[0], tmz = parts[1];\n let splitzone = tmz ? design.vcard.value.time._splitZone(tmz) : [];\n let zone = splitzone[0], tm = splitzone[1];\n\n let dtlen = dt ? dt.length : 0;\n let tmlen = tm ? tm.length : 0;\n\n let hasDashDate = dt && dt[0] == '-' && dt[1] == '-';\n let hasDashTime = tm && tm[0] == '-';\n\n let o = {\n year: hasDashDate ? null : part(dt, 0, 4),\n month: hasDashDate && (dtlen == 4 || dtlen == 7) ? part(dt, 2, 2) : dtlen == 7 ? part(dt, 5, 2) : dtlen == 10 ? part(dt, 5, 2) : null,\n day: dtlen == 5 ? part(dt, 3, 2) : dtlen == 7 && hasDashDate ? part(dt, 5, 2) : dtlen == 10 ? part(dt, 8, 2) : null,\n\n hour: hasDashTime ? null : part(tm, 0, 2),\n minute: hasDashTime && tmlen == 3 ? part(tm, 1, 2) : tmlen > 4 ? hasDashTime ? part(tm, 1, 2) : part(tm, 3, 2) : null,\n second: tmlen == 4 ? part(tm, 2, 2) : tmlen == 6 ? part(tm, 4, 2) : tmlen == 8 ? part(tm, 6, 2) : null\n };\n\n if (zone == 'Z') {\n zone = Timezone.utcTimezone;\n } else if (zone && zone[3] == ':') {\n zone = UtcOffset.fromString(zone);\n } else {\n zone = null;\n }\n\n return new VCardTime(o, zone, aIcalType);\n }\n\n\n /**\n * Creates a new ICAL.VCardTime instance.\n *\n * @param {Object} data The data for the time instance\n * @param {Number=} data.year The year for this date\n * @param {Number=} data.month The month for this date\n * @param {Number=} data.day The day for this date\n * @param {Number=} data.hour The hour for this date\n * @param {Number=} data.minute The minute for this date\n * @param {Number=} data.second The second for this date\n * @param {Timezone|UtcOffset} zone The timezone to use\n * @param {String} icaltype The type for this date/time object\n */\n constructor(data, zone, icaltype) {\n super(data, zone);\n this.icaltype = icaltype || \"date-and-or-time\";\n }\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"vcardtime\"\n */\n icalclass = \"vcardtime\";\n\n /**\n * The type name, to be used in the jCal object.\n * @type {String}\n * @default \"date-and-or-time\"\n */\n icaltype = \"date-and-or-time\";\n\n /**\n * Returns a clone of the vcard date/time object.\n *\n * @return {VCardTime} The cloned object\n */\n clone() {\n return new VCardTime(this._time, this.zone, this.icaltype);\n }\n\n _normalize() {\n return this;\n }\n\n /**\n * @inheritdoc\n */\n utcOffset() {\n if (this.zone instanceof UtcOffset) {\n return this.zone.toSeconds();\n } else {\n return Time.prototype.utcOffset.apply(this, arguments);\n }\n }\n\n /**\n * Returns an RFC 6350 compliant representation of this object.\n *\n * @return {String} vcard date/time string\n */\n toICALString() {\n return design.vcard.value[this.icaltype].toICAL(this.toString());\n }\n\n /**\n * The string representation of this date/time, in jCard form\n * (including : and - separators).\n * @return {String}\n */\n toString() {\n let y = this.year, m = this.month, d = this.day;\n let h = this.hour, mm = this.minute, s = this.second;\n\n let hasYear = y !== null, hasMonth = m !== null, hasDay = d !== null;\n let hasHour = h !== null, hasMinute = mm !== null, hasSecond = s !== null;\n\n let datepart = (hasYear ? pad2(y) + (hasMonth || hasDay ? '-' : '') : (hasMonth || hasDay ? '--' : '')) +\n (hasMonth ? pad2(m) : '') +\n (hasDay ? '-' + pad2(d) : '');\n let timepart = (hasHour ? pad2(h) : '-') + (hasHour && hasMinute ? ':' : '') +\n (hasMinute ? pad2(mm) : '') + (!hasHour && !hasMinute ? '-' : '') +\n (hasMinute && hasSecond ? ':' : '') +\n (hasSecond ? pad2(s) : '');\n\n let zone;\n if (this.zone === Timezone.utcTimezone) {\n zone = 'Z';\n } else if (this.zone instanceof UtcOffset) {\n zone = this.zone.toString();\n } else if (this.zone === Timezone.localTimezone) {\n zone = '';\n } else if (this.zone instanceof Timezone) {\n let offset = UtcOffset.fromSeconds(this.zone.utcOffset(this));\n zone = offset.toString();\n } else {\n zone = '';\n }\n\n switch (this.icaltype) {\n case \"time\":\n return timepart + zone;\n case \"date-and-or-time\":\n case \"date-time\":\n return datepart + (timepart == '--' ? '' : 'T' + timepart + zone);\n case \"date\":\n return datepart;\n }\n return null;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n */\n\n/**\n * An iterator for a single recurrence rule. This class usually doesn't have to be instanciated\n * directly, the convenience method {@link ICAL.Recur#iterator} can be used.\n *\n * @memberof ICAL\n */\nclass RecurIterator {\n static _indexMap = {\n \"BYSECOND\": 0,\n \"BYMINUTE\": 1,\n \"BYHOUR\": 2,\n \"BYDAY\": 3,\n \"BYMONTHDAY\": 4,\n \"BYYEARDAY\": 5,\n \"BYWEEKNO\": 6,\n \"BYMONTH\": 7,\n \"BYSETPOS\": 8\n };\n\n static _expandMap = {\n \"SECONDLY\": [1, 1, 1, 1, 1, 1, 1, 1],\n \"MINUTELY\": [2, 1, 1, 1, 1, 1, 1, 1],\n \"HOURLY\": [2, 2, 1, 1, 1, 1, 1, 1],\n \"DAILY\": [2, 2, 2, 1, 1, 1, 1, 1],\n \"WEEKLY\": [2, 2, 2, 2, 3, 3, 1, 1],\n \"MONTHLY\": [2, 2, 2, 2, 2, 3, 3, 1],\n \"YEARLY\": [2, 2, 2, 2, 2, 2, 2, 2]\n };\n\n static UNKNOWN = 0;\n static CONTRACT = 1;\n static EXPAND = 2;\n static ILLEGAL = 3;\n\n /**\n * Creates a new ICAL.RecurIterator instance. The options object may contain additional members\n * when resuming iteration from a previous run.\n *\n * @param {Object} options The iterator options\n * @param {Recur} options.rule The rule to iterate.\n * @param {Time} options.dtstart The start date of the event.\n * @param {Boolean=} options.initialized When true, assume that options are\n * from a previously constructed iterator. Initialization will not be\n * repeated.\n */\n constructor(options) {\n this.fromData(options);\n }\n\n /**\n * True when iteration is finished.\n * @type {Boolean}\n */\n completed = false;\n\n /**\n * The rule that is being iterated\n * @type {Recur}\n */\n rule = null;\n\n /**\n * The start date of the event being iterated.\n * @type {Time}\n */\n dtstart = null;\n\n /**\n * The last occurrence that was returned from the\n * {@link RecurIterator#next} method.\n * @type {Time}\n */\n last = null;\n\n /**\n * The sequence number from the occurrence\n * @type {Number}\n */\n occurrence_number = 0;\n\n /**\n * The indices used for the {@link ICAL.RecurIterator#by_data} object.\n * @type {Object}\n * @private\n */\n by_indices = null;\n\n /**\n * If true, the iterator has already been initialized\n * @type {Boolean}\n * @private\n */\n initialized = false;\n\n /**\n * The initializd by-data.\n * @type {Object}\n * @private\n */\n by_data = null;\n\n /**\n * The expanded yeardays\n * @type {Array}\n * @private\n */\n days = null;\n\n /**\n * The index in the {@link ICAL.RecurIterator#days} array.\n * @type {Number}\n * @private\n */\n days_index = 0;\n\n /**\n * Initialize the recurrence iterator from the passed data object. This\n * method is usually not called directly, you can initialize the iterator\n * through the constructor.\n *\n * @param {Object} options The iterator options\n * @param {Recur} options.rule The rule to iterate.\n * @param {Time} options.dtstart The start date of the event.\n * @param {Boolean=} options.initialized When true, assume that options are\n * from a previously constructed iterator. Initialization will not be\n * repeated.\n */\n fromData(options) {\n this.rule = formatClassType(options.rule, Recur);\n\n if (!this.rule) {\n throw new Error('iterator requires a (ICAL.Recur) rule');\n }\n\n this.dtstart = formatClassType(options.dtstart, Time);\n\n if (!this.dtstart) {\n throw new Error('iterator requires a (ICAL.Time) dtstart');\n }\n\n if (options.by_data) {\n this.by_data = options.by_data;\n } else {\n this.by_data = clone(this.rule.parts, true);\n }\n\n if (options.occurrence_number)\n this.occurrence_number = options.occurrence_number;\n\n this.days = options.days || [];\n if (options.last) {\n this.last = formatClassType(options.last, Time);\n }\n\n this.by_indices = options.by_indices;\n\n if (!this.by_indices) {\n this.by_indices = {\n \"BYSECOND\": 0,\n \"BYMINUTE\": 0,\n \"BYHOUR\": 0,\n \"BYDAY\": 0,\n \"BYMONTH\": 0,\n \"BYWEEKNO\": 0,\n \"BYMONTHDAY\": 0\n };\n }\n\n this.initialized = options.initialized || false;\n\n if (!this.initialized) {\n try {\n this.init();\n } catch (e) {\n if (e instanceof InvalidRecurrenceRuleError) {\n // Init may error if there are no possible recurrence instances from\n // the rule, but we don't want to bubble this error up. Instead, we\n // create an empty iterator.\n this.completed = true;\n } else {\n // Propagate other errors to consumers.\n throw e;\n }\n }\n }\n }\n\n /**\n * Initialize the iterator\n * @private\n */\n init() {\n this.initialized = true;\n this.last = this.dtstart.clone();\n let parts = this.by_data;\n\n if (\"BYDAY\" in parts) {\n // libical does this earlier when the rule is loaded, but we postpone to\n // now so we can preserve the original order.\n this.sort_byday_rules(parts.BYDAY);\n }\n\n // The BYYEARDAY may only appear with BYDAY\n if (\"BYYEARDAY\" in parts) {\n if (\"BYMONTH\" in parts || \"BYWEEKNO\" in parts ||\n \"BYMONTHDAY\" in parts) {\n throw new Error(\"Invalid BYYEARDAY rule\");\n }\n }\n\n // BYWEEKNO and BYMONTHDAY rule parts may not both appear\n if (\"BYWEEKNO\" in parts && \"BYMONTHDAY\" in parts) {\n throw new Error(\"BYWEEKNO does not fit to BYMONTHDAY\");\n }\n\n // For MONTHLY recurrences (FREQ=MONTHLY) neither BYYEARDAY nor\n // BYWEEKNO may appear.\n if (this.rule.freq == \"MONTHLY\" &&\n (\"BYYEARDAY\" in parts || \"BYWEEKNO\" in parts)) {\n throw new Error(\"For MONTHLY recurrences neither BYYEARDAY nor BYWEEKNO may appear\");\n }\n\n // For WEEKLY recurrences (FREQ=WEEKLY) neither BYMONTHDAY nor\n // BYYEARDAY may appear.\n if (this.rule.freq == \"WEEKLY\" &&\n (\"BYYEARDAY\" in parts || \"BYMONTHDAY\" in parts)) {\n throw new Error(\"For WEEKLY recurrences neither BYMONTHDAY nor BYYEARDAY may appear\");\n }\n\n // BYYEARDAY may only appear in YEARLY rules\n if (this.rule.freq != \"YEARLY\" && \"BYYEARDAY\" in parts) {\n throw new Error(\"BYYEARDAY may only appear in YEARLY rules\");\n }\n\n this.last.second = this.setup_defaults(\"BYSECOND\", \"SECONDLY\", this.dtstart.second);\n this.last.minute = this.setup_defaults(\"BYMINUTE\", \"MINUTELY\", this.dtstart.minute);\n this.last.hour = this.setup_defaults(\"BYHOUR\", \"HOURLY\", this.dtstart.hour);\n this.last.day = this.setup_defaults(\"BYMONTHDAY\", \"DAILY\", this.dtstart.day);\n this.last.month = this.setup_defaults(\"BYMONTH\", \"MONTHLY\", this.dtstart.month);\n\n if (this.rule.freq == \"WEEKLY\") {\n if (\"BYDAY\" in parts) {\n let [, dow] = this.ruleDayOfWeek(parts.BYDAY[0], this.rule.wkst);\n let wkdy = dow - this.last.dayOfWeek(this.rule.wkst);\n if ((this.last.dayOfWeek(this.rule.wkst) < dow && wkdy >= 0) || wkdy < 0) {\n // Initial time is after first day of BYDAY data\n this.last.day += wkdy;\n }\n } else {\n let dayName = Recur.numericDayToIcalDay(this.dtstart.dayOfWeek());\n parts.BYDAY = [dayName];\n }\n }\n\n if (this.rule.freq == \"YEARLY\") {\n // Some yearly recurrence rules may be specific enough to not actually\n // occur on a yearly basis, e.g. the 29th day of February or the fifth\n // Monday of a given month. The standard isn't clear on the intended\n // behavior in these cases, but `libical` at least will iterate until it\n // finds a matching year.\n // CAREFUL: Some rules may specify an occurrence that can never happen,\n // e.g. the first Monday of April so long as it falls on the 15th\n // through the 21st. Detecting these is non-trivial, so ensure that we\n // stop iterating at some point.\n const untilYear = this.rule.until ? this.rule.until.year : 20000;\n while (this.last.year <= untilYear) {\n this.expand_year_days(this.last.year);\n if (this.days.length > 0) {\n break;\n }\n this.increment_year(this.rule.interval);\n }\n\n if (this.days.length == 0) {\n throw new InvalidRecurrenceRuleError();\n }\n\n // If there's no occurrence in this year, try the following years. This\n // would only happen looking for day 366 or -366.\n if (!this._nextByYearDay() && !this.next_year() && !this.next_year() && !this.next_year()) {\n // This should not be possible, but just in case it is, stop.\n throw new InvalidRecurrenceRuleError();\n }\n }\n\n if (this.rule.freq == \"MONTHLY\") {\n if (this.has_by_data(\"BYDAY\")) {\n let tempLast = null;\n let initLast = this.last.clone();\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n\n // Check every weekday in BYDAY with relative dow and pos.\n for (let bydow of this.by_data.BYDAY) {\n this.last = initLast.clone();\n let [pos, dow] = this.ruleDayOfWeek(bydow);\n let dayOfMonth = this.last.nthWeekDay(dow, pos);\n\n // If |pos| >= 6, the byday is invalid for a monthly rule.\n if (pos >= 6 || pos <= -6) {\n throw new Error(\"Malformed values in BYDAY part\");\n }\n\n // If a Byday with pos=+/-5 is not in the current month it\n // must be searched in the next months.\n if (dayOfMonth > daysInMonth || dayOfMonth <= 0) {\n // Skip if we have already found a \"last\" in this month.\n if (tempLast && tempLast.month == initLast.month) {\n continue;\n }\n while (dayOfMonth > daysInMonth || dayOfMonth <= 0) {\n this.increment_month();\n daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n dayOfMonth = this.last.nthWeekDay(dow, pos);\n }\n }\n\n this.last.day = dayOfMonth;\n if (!tempLast || this.last.compare(tempLast) < 0) {\n tempLast = this.last.clone();\n }\n }\n this.last = tempLast.clone();\n\n //XXX: This feels like a hack, but we need to initialize\n // the BYMONTHDAY case correctly and byDayAndMonthDay handles\n // this case. It accepts a special flag which will avoid incrementing\n // the initial value without the flag days that match the start time\n // would be missed.\n if (this.has_by_data('BYMONTHDAY')) {\n this._byDayAndMonthDay(true);\n }\n\n if (this.last.day > daysInMonth || this.last.day == 0) {\n throw new Error(\"Malformed values in BYDAY part\");\n }\n } else if (this.has_by_data(\"BYMONTHDAY\")) {\n // Change the day value so that normalisation won't change the month.\n this.last.day = 1;\n\n // Get a sorted list of days in the starting month that match the rule.\n let normalized = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n ).filter(d => d >= this.last.day);\n\n if (normalized.length) {\n // There's at least one valid day, use it.\n this.last.day = normalized[0];\n this.by_data.BYMONTHDAY = normalized;\n } else {\n // There's no occurrence in this month, find the next valid month.\n // The longest possible sequence of skipped months is February-April-June,\n // so we might need to call next_month up to three times.\n if (!this.next_month() && !this.next_month() && !this.next_month()) {\n throw new InvalidRecurrenceRuleError();\n }\n }\n }\n }\n }\n\n /**\n * Retrieve the next occurrence from the iterator.\n * @return {Time}\n */\n next(again = false) {\n let before = (this.last ? this.last.clone() : null);\n\n if ((this.rule.count && this.occurrence_number >= this.rule.count) ||\n (this.rule.until && this.last.compare(this.rule.until) > 0)) {\n this.completed = true;\n }\n\n if (this.completed) {\n return null;\n }\n\n if (this.occurrence_number == 0 && this.last.compare(this.dtstart) >= 0) {\n // First of all, give the instance that was initialized\n this.occurrence_number++;\n return this.last;\n }\n\n let valid;\n let invalid_count = 0;\n do {\n valid = 1;\n\n switch (this.rule.freq) {\n case \"SECONDLY\":\n this.next_second();\n break;\n case \"MINUTELY\":\n this.next_minute();\n break;\n case \"HOURLY\":\n this.next_hour();\n break;\n case \"DAILY\":\n this.next_day();\n break;\n case \"WEEKLY\":\n this.next_week();\n break;\n case \"MONTHLY\":\n valid = this.next_month();\n if (valid) {\n invalid_count = 0;\n } else if (++invalid_count == 336) {\n // We've been through all 91 month variations and not found a recurrence. Stop.\n // (12 months and 29-day February × 7 starting days.)\n this.completed = true;\n return null;\n }\n break;\n case \"YEARLY\":\n valid = this.next_year();\n if (valid) {\n invalid_count = 0;\n } else if (++invalid_count == 28) {\n // We've been through all 14 year variations and not found a recurrence. Stop.\n // (365-day and 366-day years × 7 starting days.)\n this.completed = true;\n return null;\n }\n break;\n\n default:\n return null;\n }\n } while (!this.check_contracting_rules() ||\n this.last.compare(this.dtstart) < 0 ||\n !valid);\n\n if (this.last.compare(before) == 0) {\n if (again) {\n throw new Error(\"Same occurrence found twice, protecting you from death by recursion\");\n }\n this.next(true);\n }\n\n if (this.rule.until && this.last.compare(this.rule.until) > 0) {\n this.completed = true;\n return null;\n } else {\n this.occurrence_number++;\n return this.last;\n }\n }\n\n next_second() {\n return this.next_generic(\"BYSECOND\", \"SECONDLY\", \"second\", \"minute\");\n }\n\n increment_second(inc) {\n return this.increment_generic(inc, \"second\", 60, \"minute\");\n }\n\n next_minute() {\n return this.next_generic(\"BYMINUTE\", \"MINUTELY\",\n \"minute\", \"hour\", \"next_second\");\n }\n\n increment_minute(inc) {\n return this.increment_generic(inc, \"minute\", 60, \"hour\");\n }\n\n next_hour() {\n return this.next_generic(\"BYHOUR\", \"HOURLY\", \"hour\",\n \"monthday\", \"next_minute\");\n }\n\n increment_hour(inc) {\n this.increment_generic(inc, \"hour\", 24, \"monthday\");\n }\n\n next_day() {\n let this_freq = (this.rule.freq == \"DAILY\");\n\n if (this.next_hour() == 0) {\n return 0;\n }\n\n if (this_freq) {\n this.increment_monthday(this.rule.interval);\n } else {\n this.increment_monthday(1);\n }\n\n return 0;\n }\n\n next_week() {\n let end_of_data = 0;\n\n if (this.next_weekday_by_week() == 0) {\n return end_of_data;\n }\n\n if (this.has_by_data(\"BYWEEKNO\")) {\n this.by_indices.BYWEEKNO++;\n\n if (this.by_indices.BYWEEKNO == this.by_data.BYWEEKNO.length) {\n this.by_indices.BYWEEKNO = 0;\n end_of_data = 1;\n }\n\n // HACK should be first month of the year\n this.last.month = 1;\n this.last.day = 1;\n\n let week_no = this.by_data.BYWEEKNO[this.by_indices.BYWEEKNO];\n\n this.last.day += 7 * week_no;\n\n if (end_of_data) {\n this.increment_year(1);\n }\n } else {\n // Jump to the next week\n this.increment_monthday(7 * this.rule.interval);\n }\n\n return end_of_data;\n }\n\n /**\n * Normalize each by day rule for a given year/month.\n * Takes into account ordering and negative rules\n *\n * @private\n * @param {Number} year Current year.\n * @param {Number} month Current month.\n * @param {Array} rules Array of rules.\n *\n * @return {Array} sorted and normalized rules.\n * Negative rules will be expanded to their\n * correct positive values for easier processing.\n */\n normalizeByMonthDayRules(year, month, rules) {\n let daysInMonth = Time.daysInMonth(month, year);\n\n // XXX: This is probably bad for performance to allocate\n // a new array for each month we scan, if possible\n // we should try to optimize this...\n let newRules = [];\n\n let ruleIdx = 0;\n let len = rules.length;\n let rule;\n\n for (; ruleIdx < len; ruleIdx++) {\n rule = parseInt(rules[ruleIdx], 10);\n if (isNaN(rule)) {\n throw new Error('Invalid BYMONTHDAY value');\n }\n\n // if this rule falls outside of given\n // month discard it.\n if (Math.abs(rule) > daysInMonth) {\n continue;\n }\n\n // negative case\n if (rule < 0) {\n // we add (not subtract it is a negative number)\n // one from the rule because 1 === last day of month\n rule = daysInMonth + (rule + 1);\n } else if (rule === 0) {\n // skip zero: it is invalid.\n continue;\n }\n\n // only add unique items...\n if (newRules.indexOf(rule) === -1) {\n newRules.push(rule);\n }\n\n }\n\n // unique and sort\n return newRules.sort(function(a, b) { return a - b; });\n }\n\n /**\n * NOTES:\n * We are given a list of dates in the month (BYMONTHDAY) (23, etc..)\n * Also we are given a list of days (BYDAY) (MO, 2SU, etc..) when\n * both conditions match a given date (this.last.day) iteration stops.\n *\n * @private\n * @param {Boolean=} isInit When given true will not increment the\n * current day (this.last).\n */\n _byDayAndMonthDay(isInit) {\n let byMonthDay; // setup in initMonth\n let byDay = this.by_data.BYDAY;\n\n let date;\n let dateIdx = 0;\n let dateLen; // setup in initMonth\n let dayLen = byDay.length;\n\n // we are not valid by default\n let dataIsValid = 0;\n\n let daysInMonth;\n let self = this;\n // we need a copy of this, because a DateTime gets normalized\n // automatically if the day is out of range. At some points we\n // set the last day to 0 to start counting.\n let lastDay = this.last.day;\n\n function initMonth() {\n daysInMonth = Time.daysInMonth(\n self.last.month, self.last.year\n );\n\n byMonthDay = self.normalizeByMonthDayRules(\n self.last.year,\n self.last.month,\n self.by_data.BYMONTHDAY\n );\n\n dateLen = byMonthDay.length;\n\n // For the case of more than one occurrence in one month\n // we have to be sure to start searching after the last\n // found date or at the last BYMONTHDAY, unless we are\n // initializing the iterator because in this case we have\n // to consider the last found date too.\n while (byMonthDay[dateIdx] <= lastDay &&\n !(isInit && byMonthDay[dateIdx] == lastDay) &&\n dateIdx < dateLen - 1) {\n dateIdx++;\n }\n }\n\n function nextMonth() {\n // since the day is incremented at the start\n // of the loop below, we need to start at 0\n lastDay = 0;\n self.increment_month();\n dateIdx = 0;\n initMonth();\n }\n\n initMonth();\n\n // should come after initMonth\n if (isInit) {\n lastDay -= 1;\n }\n\n // Use a counter to avoid an infinite loop with malformed rules.\n // Stop checking after 4 years so we consider also a leap year.\n let monthsCounter = 48;\n\n while (!dataIsValid && monthsCounter) {\n monthsCounter--;\n // increment the current date. This is really\n // important otherwise we may fall into the infinite\n // loop trap. The initial date takes care of the case\n // where the current date is the date we are looking\n // for.\n date = lastDay + 1;\n\n if (date > daysInMonth) {\n nextMonth();\n continue;\n }\n\n // find next date\n let next = byMonthDay[dateIdx++];\n\n // this logic is dependent on the BYMONTHDAYS\n // being in order (which is done by #normalizeByMonthDayRules)\n if (next >= date) {\n // if the next month day is in the future jump to it.\n lastDay = next;\n } else {\n // in this case the 'next' monthday has past\n // we must move to the month.\n nextMonth();\n continue;\n }\n\n // Now we can loop through the day rules to see\n // if one matches the current month date.\n for (let dayIdx = 0; dayIdx < dayLen; dayIdx++) {\n let parts = this.ruleDayOfWeek(byDay[dayIdx]);\n let pos = parts[0];\n let dow = parts[1];\n\n this.last.day = lastDay;\n if (this.last.isNthWeekDay(dow, pos)) {\n // when we find the valid one we can mark\n // the conditions as met and break the loop.\n // (Because we have this condition above\n // it will also break the parent loop).\n dataIsValid = 1;\n break;\n }\n }\n\n // It is completely possible that the combination\n // cannot be matched in the current month.\n // When we reach the end of possible combinations\n // in the current month we iterate to the next one.\n // since dateIdx is incremented right after getting\n // \"next\", we don't need dateLen -1 here.\n if (!dataIsValid && dateIdx === dateLen) {\n nextMonth();\n continue;\n }\n }\n\n if (monthsCounter <= 0) {\n // Checked 4 years without finding a Byday that matches\n // a Bymonthday. Maybe the rule is not correct.\n throw new Error(\"Malformed values in BYDAY combined with BYMONTHDAY parts\");\n }\n\n\n return dataIsValid;\n }\n\n next_month() {\n let data_valid = 1;\n\n if (this.next_hour() == 0) {\n return data_valid;\n }\n\n if (this.has_by_data(\"BYDAY\") && this.has_by_data(\"BYMONTHDAY\")) {\n data_valid = this._byDayAndMonthDay();\n } else if (this.has_by_data(\"BYDAY\")) {\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n let setpos = 0;\n let setpos_total = 0;\n\n if (this.has_by_data(\"BYSETPOS\")) {\n let last_day = this.last.day;\n for (let day = 1; day <= daysInMonth; day++) {\n this.last.day = day;\n if (this.is_day_in_byday(this.last)) {\n setpos_total++;\n if (day <= last_day) {\n setpos++;\n }\n }\n }\n this.last.day = last_day;\n }\n\n data_valid = 0;\n let day;\n for (day = this.last.day + 1; day <= daysInMonth; day++) {\n this.last.day = day;\n\n if (this.is_day_in_byday(this.last)) {\n if (!this.has_by_data(\"BYSETPOS\") ||\n this.check_set_position(++setpos) ||\n this.check_set_position(setpos - setpos_total - 1)) {\n\n data_valid = 1;\n break;\n }\n }\n }\n\n if (day > daysInMonth) {\n this.last.day = 1;\n this.increment_month();\n\n if (this.is_day_in_byday(this.last)) {\n if (!this.has_by_data(\"BYSETPOS\") || this.check_set_position(1)) {\n data_valid = 1;\n }\n } else {\n data_valid = 0;\n }\n }\n } else if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_indices.BYMONTHDAY++;\n\n if (this.by_indices.BYMONTHDAY >= this.by_data.BYMONTHDAY.length) {\n this.by_indices.BYMONTHDAY = 0;\n this.increment_month();\n if (this.by_indices.BYMONTHDAY >= this.by_data.BYMONTHDAY.length) {\n return 0;\n }\n }\n\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n let day = this.by_data.BYMONTHDAY[this.by_indices.BYMONTHDAY];\n\n if (day < 0) {\n day = daysInMonth + day + 1;\n }\n\n if (day > daysInMonth) {\n this.last.day = 1;\n data_valid = this.is_day_in_byday(this.last);\n } else {\n this.last.day = day;\n }\n } else {\n this.increment_month();\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n if (this.by_data.BYMONTHDAY[0] > daysInMonth) {\n data_valid = 0;\n } else {\n this.last.day = this.by_data.BYMONTHDAY[0];\n }\n }\n\n return data_valid;\n }\n\n next_weekday_by_week() {\n let end_of_data = 0;\n\n if (this.next_hour() == 0) {\n return end_of_data;\n }\n\n if (!this.has_by_data(\"BYDAY\")) {\n return 1;\n }\n\n for (;;) {\n let tt = new Time();\n this.by_indices.BYDAY++;\n\n if (this.by_indices.BYDAY == Object.keys(this.by_data.BYDAY).length) {\n this.by_indices.BYDAY = 0;\n end_of_data = 1;\n }\n\n let coded_day = this.by_data.BYDAY[this.by_indices.BYDAY];\n let parts = this.ruleDayOfWeek(coded_day);\n let dow = parts[1];\n\n dow -= this.rule.wkst;\n\n if (dow < 0) {\n dow += 7;\n }\n\n tt.year = this.last.year;\n tt.month = this.last.month;\n tt.day = this.last.day;\n\n let startOfWeek = tt.startDoyWeek(this.rule.wkst);\n\n if (dow + startOfWeek < 1) {\n // The selected date is in the previous year\n if (!end_of_data) {\n continue;\n }\n }\n\n let next = Time.fromDayOfYear(startOfWeek + dow, this.last.year);\n\n /**\n * The normalization horrors below are due to\n * the fact that when the year/month/day changes\n * it can effect the other operations that come after.\n */\n this.last.year = next.year;\n this.last.month = next.month;\n this.last.day = next.day;\n\n return end_of_data;\n }\n }\n\n next_year() {\n if (this.next_hour() == 0) {\n return 0;\n }\n\n if (this.days.length == 0 || ++this.days_index == this.days.length) {\n this.days_index = 0;\n this.increment_year(this.rule.interval);\n if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_data.BYMONTHDAY = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n );\n }\n this.expand_year_days(this.last.year);\n if (this.days.length == 0) {\n return 0;\n }\n }\n\n return this._nextByYearDay();\n }\n\n _nextByYearDay() {\n let doy = this.days[this.days_index];\n let year = this.last.year;\n\n if (Math.abs(doy) == 366 && !Time.isLeapYear(this.last.year)) {\n return 0;\n }\n\n if (doy < 1) {\n // Time.fromDayOfYear(doy, year) indexes relative to the\n // start of the given year. That is different from the\n // semantics of BYYEARDAY where negative indexes are an\n // offset from the end of the given year.\n doy += 1;\n year += 1;\n }\n let next = Time.fromDayOfYear(doy, year);\n this.last.day = next.day;\n this.last.month = next.month;\n\n return 1;\n }\n\n /**\n * @param dow (eg: '1TU', '-1MO')\n * @param {weekDay=} aWeekStart The week start weekday\n * @return [pos, numericDow] (eg: [1, 3]) numericDow is relative to aWeekStart\n */\n ruleDayOfWeek(dow, aWeekStart) {\n let matches = dow.match(/([+-]?[0-9])?(MO|TU|WE|TH|FR|SA|SU)/);\n if (matches) {\n let pos = parseInt(matches[1] || 0, 10);\n dow = Recur.icalDayToNumericDay(matches[2], aWeekStart);\n return [pos, dow];\n } else {\n return [0, 0];\n }\n }\n\n next_generic(aRuleType, aInterval, aDateAttr, aFollowingAttr, aPreviousIncr) {\n let has_by_rule = (aRuleType in this.by_data);\n let this_freq = (this.rule.freq == aInterval);\n let end_of_data = 0;\n\n if (aPreviousIncr && this[aPreviousIncr]() == 0) {\n return end_of_data;\n }\n\n if (has_by_rule) {\n this.by_indices[aRuleType]++;\n let dta = this.by_data[aRuleType];\n\n if (this.by_indices[aRuleType] == dta.length) {\n this.by_indices[aRuleType] = 0;\n end_of_data = 1;\n }\n this.last[aDateAttr] = dta[this.by_indices[aRuleType]];\n } else if (this_freq) {\n this[\"increment_\" + aDateAttr](this.rule.interval);\n }\n\n if (has_by_rule && end_of_data && this_freq) {\n this[\"increment_\" + aFollowingAttr](1);\n }\n\n return end_of_data;\n }\n\n increment_monthday(inc) {\n for (let i = 0; i < inc; i++) {\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n this.last.day++;\n\n if (this.last.day > daysInMonth) {\n this.last.day -= daysInMonth;\n this.increment_month();\n }\n }\n }\n\n increment_month() {\n this.last.day = 1;\n if (this.has_by_data(\"BYMONTH\")) {\n this.by_indices.BYMONTH++;\n\n if (this.by_indices.BYMONTH == this.by_data.BYMONTH.length) {\n this.by_indices.BYMONTH = 0;\n this.increment_year(1);\n }\n\n this.last.month = this.by_data.BYMONTH[this.by_indices.BYMONTH];\n } else {\n if (this.rule.freq == \"MONTHLY\") {\n this.last.month += this.rule.interval;\n } else {\n this.last.month++;\n }\n\n this.last.month--;\n let years = trunc(this.last.month / 12);\n this.last.month %= 12;\n this.last.month++;\n\n if (years != 0) {\n this.increment_year(years);\n }\n }\n\n if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_data.BYMONTHDAY = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n );\n }\n }\n\n increment_year(inc) {\n // Don't jump into the next month if this.last is Feb 29.\n this.last.day = 1;\n this.last.year += inc;\n }\n\n increment_generic(inc, aDateAttr, aFactor, aNextIncrement) {\n this.last[aDateAttr] += inc;\n let nextunit = trunc(this.last[aDateAttr] / aFactor);\n this.last[aDateAttr] %= aFactor;\n if (nextunit != 0) {\n this[\"increment_\" + aNextIncrement](nextunit);\n }\n }\n\n has_by_data(aRuleType) {\n return (aRuleType in this.rule.parts);\n }\n\n expand_year_days(aYear) {\n let t = new Time();\n this.days = [];\n\n // We need our own copy with a few keys set\n let parts = {};\n let rules = [\"BYDAY\", \"BYWEEKNO\", \"BYMONTHDAY\", \"BYMONTH\", \"BYYEARDAY\"];\n for (let part of rules) {\n if (part in this.rule.parts) {\n parts[part] = this.rule.parts[part];\n }\n }\n\n if (\"BYMONTH\" in parts && \"BYWEEKNO\" in parts) {\n let valid = 1;\n let validWeeks = {};\n t.year = aYear;\n t.isDate = true;\n\n for (let monthIdx = 0; monthIdx < this.by_data.BYMONTH.length; monthIdx++) {\n let month = this.by_data.BYMONTH[monthIdx];\n t.month = month;\n t.day = 1;\n let first_week = t.weekNumber(this.rule.wkst);\n t.day = Time.daysInMonth(month, aYear);\n let last_week = t.weekNumber(this.rule.wkst);\n for (monthIdx = first_week; monthIdx < last_week; monthIdx++) {\n validWeeks[monthIdx] = 1;\n }\n }\n\n for (let weekIdx = 0; weekIdx < this.by_data.BYWEEKNO.length && valid; weekIdx++) {\n let weekno = this.by_data.BYWEEKNO[weekIdx];\n if (weekno < 52) {\n valid &= validWeeks[weekIdx];\n } else {\n valid = 0;\n }\n }\n\n if (valid) {\n delete parts.BYMONTH;\n } else {\n delete parts.BYWEEKNO;\n }\n }\n\n let partCount = Object.keys(parts).length;\n\n if (partCount == 0) {\n let t1 = this.dtstart.clone();\n t1.year = this.last.year;\n this.days.push(t1.dayOfYear());\n } else if (partCount == 1 && \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let t2 = this.dtstart.clone();\n t2.year = aYear;\n t2.month = month;\n t2.isDate = true;\n this.days.push(t2.dayOfYear());\n }\n } else if (partCount == 1 && \"BYMONTHDAY\" in parts) {\n for (let monthday of this.by_data.BYMONTHDAY) {\n let t3 = this.dtstart.clone();\n if (monthday < 0) {\n let daysInMonth = Time.daysInMonth(t3.month, aYear);\n monthday = monthday + daysInMonth + 1;\n }\n t3.day = monthday;\n t3.year = aYear;\n t3.isDate = true;\n this.days.push(t3.dayOfYear());\n }\n } else if (partCount == 2 &&\n \"BYMONTHDAY\" in parts &&\n \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let daysInMonth = Time.daysInMonth(month, aYear);\n for (let monthday of this.by_data.BYMONTHDAY) {\n if (monthday < 0) {\n monthday = monthday + daysInMonth + 1;\n }\n t.day = monthday;\n t.month = month;\n t.year = aYear;\n t.isDate = true;\n\n this.days.push(t.dayOfYear());\n }\n }\n } else if (partCount == 1 && \"BYWEEKNO\" in parts) ; else if (partCount == 2 &&\n \"BYWEEKNO\" in parts &&\n \"BYMONTHDAY\" in parts) ; else if (partCount == 1 && \"BYDAY\" in parts) {\n this.days = this.days.concat(this.expand_by_day(aYear));\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let daysInMonth = Time.daysInMonth(month, aYear);\n\n t.year = aYear;\n t.month = month;\n t.day = 1;\n t.isDate = true;\n\n let first_dow = t.dayOfWeek();\n let doy_offset = t.dayOfYear() - 1;\n\n t.day = daysInMonth;\n let last_dow = t.dayOfWeek();\n\n if (this.has_by_data(\"BYSETPOS\")) {\n let by_month_day = [];\n for (let day = 1; day <= daysInMonth; day++) {\n t.day = day;\n if (this.is_day_in_byday(t)) {\n by_month_day.push(day);\n }\n }\n\n for (let spIndex = 0; spIndex < by_month_day.length; spIndex++) {\n if (this.check_set_position(spIndex + 1) ||\n this.check_set_position(spIndex - by_month_day.length)) {\n this.days.push(doy_offset + by_month_day[spIndex]);\n }\n }\n } else {\n for (let coded_day of this.by_data.BYDAY) {\n let bydayParts = this.ruleDayOfWeek(coded_day);\n let pos = bydayParts[0];\n let dow = bydayParts[1];\n let month_day;\n\n let first_matching_day = ((dow + 7 - first_dow) % 7) + 1;\n let last_matching_day = daysInMonth - ((last_dow + 7 - dow) % 7);\n\n if (pos == 0) {\n for (let day = first_matching_day; day <= daysInMonth; day += 7) {\n this.days.push(doy_offset + day);\n }\n } else if (pos > 0) {\n month_day = first_matching_day + (pos - 1) * 7;\n\n if (month_day <= daysInMonth) {\n this.days.push(doy_offset + month_day);\n }\n } else {\n month_day = last_matching_day + (pos + 1) * 7;\n\n if (month_day > 0) {\n this.days.push(doy_offset + month_day);\n }\n }\n }\n }\n }\n // Return dates in order of occurrence (1,2,3,...) instead\n // of by groups of weekdays (1,8,15,...,2,9,16,...).\n this.days.sort(function(a, b) { return a - b; }); // Comparator function allows to sort numbers.\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYMONTHDAY\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n if (this.by_data.BYMONTHDAY.indexOf(tt.day) >= 0) {\n this.days.push(day);\n }\n }\n } else if (partCount == 3 &&\n \"BYDAY\" in parts &&\n \"BYMONTHDAY\" in parts &&\n \"BYMONTH\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n\n if (this.by_data.BYMONTH.indexOf(tt.month) >= 0 &&\n this.by_data.BYMONTHDAY.indexOf(tt.day) >= 0) {\n this.days.push(day);\n }\n }\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYWEEKNO\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n let weekno = tt.weekNumber(this.rule.wkst);\n\n if (this.by_data.BYWEEKNO.indexOf(weekno)) {\n this.days.push(day);\n }\n }\n } else if (partCount == 3 &&\n \"BYDAY\" in parts &&\n \"BYWEEKNO\" in parts &&\n \"BYMONTHDAY\" in parts) ; else if (partCount == 1 && \"BYYEARDAY\" in parts) {\n this.days = this.days.concat(this.by_data.BYYEARDAY);\n } else if (partCount == 2 && \"BYYEARDAY\" in parts && \"BYDAY\" in parts) {\n let daysInYear = Time.isLeapYear(aYear) ? 366 : 365;\n let expandedDays = new Set(this.expand_by_day(aYear));\n\n for (let doy of this.by_data.BYYEARDAY) {\n if (doy < 0) {\n doy += daysInYear + 1;\n }\n\n if (expandedDays.has(doy)) {\n this.days.push(doy);\n }\n }\n } else {\n this.days = [];\n }\n\n let daysInYear = Time.isLeapYear(aYear) ? 366 : 365;\n this.days.sort((a, b) => {\n if (a < 0) a += daysInYear + 1;\n if (b < 0) b += daysInYear + 1;\n return a - b;\n });\n\n return 0;\n }\n\n expand_by_day(aYear) {\n\n let days_list = [];\n let tmp = this.last.clone();\n\n tmp.year = aYear;\n tmp.month = 1;\n tmp.day = 1;\n tmp.isDate = true;\n\n let start_dow = tmp.dayOfWeek();\n\n tmp.month = 12;\n tmp.day = 31;\n tmp.isDate = true;\n\n let end_dow = tmp.dayOfWeek();\n let end_year_day = tmp.dayOfYear();\n\n for (let day of this.by_data.BYDAY) {\n let parts = this.ruleDayOfWeek(day);\n let pos = parts[0];\n let dow = parts[1];\n\n if (pos == 0) {\n let tmp_start_doy = ((dow + 7 - start_dow) % 7) + 1;\n\n for (let doy = tmp_start_doy; doy <= end_year_day; doy += 7) {\n days_list.push(doy);\n }\n\n } else if (pos > 0) {\n let first;\n if (dow >= start_dow) {\n first = dow - start_dow + 1;\n } else {\n first = dow - start_dow + 8;\n }\n\n days_list.push(first + (pos - 1) * 7);\n } else {\n let last;\n pos = -pos;\n\n if (dow <= end_dow) {\n last = end_year_day - end_dow + dow;\n } else {\n last = end_year_day - end_dow + dow - 7;\n }\n\n days_list.push(last - (pos - 1) * 7);\n }\n }\n return days_list;\n }\n\n is_day_in_byday(tt) {\n if (this.by_data.BYDAY) {\n for (let day of this.by_data.BYDAY) {\n let parts = this.ruleDayOfWeek(day);\n let pos = parts[0];\n let dow = parts[1];\n let this_dow = tt.dayOfWeek();\n\n if ((pos == 0 && dow == this_dow) ||\n (tt.nthWeekDay(dow, pos) == tt.day)) {\n return 1;\n }\n }\n }\n\n return 0;\n }\n\n /**\n * Checks if given value is in BYSETPOS.\n *\n * @private\n * @param {Numeric} aPos position to check for.\n * @return {Boolean} false unless BYSETPOS rules exist\n * and the given value is present in rules.\n */\n check_set_position(aPos) {\n if (this.has_by_data('BYSETPOS')) {\n let idx = this.by_data.BYSETPOS.indexOf(aPos);\n // negative numbers are not false-y\n return idx !== -1;\n }\n return false;\n }\n\n sort_byday_rules(aRules) {\n for (let i = 0; i < aRules.length; i++) {\n for (let j = 0; j < i; j++) {\n let one = this.ruleDayOfWeek(aRules[j], this.rule.wkst)[1];\n let two = this.ruleDayOfWeek(aRules[i], this.rule.wkst)[1];\n\n if (one > two) {\n let tmp = aRules[i];\n aRules[i] = aRules[j];\n aRules[j] = tmp;\n }\n }\n }\n }\n\n check_contract_restriction(aRuleType, v) {\n let indexMapValue = RecurIterator._indexMap[aRuleType];\n let ruleMapValue = RecurIterator._expandMap[this.rule.freq][indexMapValue];\n let pass = false;\n\n if (aRuleType in this.by_data &&\n ruleMapValue == RecurIterator.CONTRACT) {\n\n let ruleType = this.by_data[aRuleType];\n\n for (let bydata of ruleType) {\n if (bydata == v) {\n pass = true;\n break;\n }\n }\n } else {\n // Not a contracting byrule or has no data, test passes\n pass = true;\n }\n return pass;\n }\n\n check_contracting_rules() {\n let dow = this.last.dayOfWeek();\n let weekNo = this.last.weekNumber(this.rule.wkst);\n let doy = this.last.dayOfYear();\n\n return (this.check_contract_restriction(\"BYSECOND\", this.last.second) &&\n this.check_contract_restriction(\"BYMINUTE\", this.last.minute) &&\n this.check_contract_restriction(\"BYHOUR\", this.last.hour) &&\n this.check_contract_restriction(\"BYDAY\", Recur.numericDayToIcalDay(dow)) &&\n this.check_contract_restriction(\"BYWEEKNO\", weekNo) &&\n this.check_contract_restriction(\"BYMONTHDAY\", this.last.day) &&\n this.check_contract_restriction(\"BYMONTH\", this.last.month) &&\n this.check_contract_restriction(\"BYYEARDAY\", doy));\n }\n\n setup_defaults(aRuleType, req, deftime) {\n let indexMapValue = RecurIterator._indexMap[aRuleType];\n let ruleMapValue = RecurIterator._expandMap[this.rule.freq][indexMapValue];\n\n if (ruleMapValue != RecurIterator.CONTRACT) {\n if (!(aRuleType in this.by_data)) {\n this.by_data[aRuleType] = [deftime];\n }\n if (this.rule.freq != req) {\n return this.by_data[aRuleType][0];\n }\n }\n return deftime;\n }\n\n /**\n * Convert iterator into a serialize-able object. Will preserve current\n * iteration sequence to ensure the seamless continuation of the recurrence\n * rule.\n * @return {Object}\n */\n toJSON() {\n let result = Object.create(null);\n\n result.initialized = this.initialized;\n result.rule = this.rule.toJSON();\n result.dtstart = this.dtstart.toJSON();\n result.by_data = this.by_data;\n result.days = this.days;\n result.last = this.last.toJSON();\n result.by_indices = this.by_indices;\n result.occurrence_number = this.occurrence_number;\n\n return result;\n }\n}\n\n/**\n * An error indicating that a recurrence rule is invalid and produces no\n * occurrences.\n *\n * @extends {Error}\n * @class\n */\nclass InvalidRecurrenceRuleError extends Error {\n constructor() {\n super(\"Recurrence rule has no valid occurrences\");\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").frequencyValues} frequencyValues\n * Imports the 'frequencyValues' type from the \"types.js\" module\n */\n\nconst VALID_DAY_NAMES = /^(SU|MO|TU|WE|TH|FR|SA)$/;\nconst VALID_BYDAY_PART = /^([+-])?(5[0-3]|[1-4][0-9]|[1-9])?(SU|MO|TU|WE|TH|FR|SA)$/;\nconst DOW_MAP = {\n SU: Time.SUNDAY,\n MO: Time.MONDAY,\n TU: Time.TUESDAY,\n WE: Time.WEDNESDAY,\n TH: Time.THURSDAY,\n FR: Time.FRIDAY,\n SA: Time.SATURDAY\n};\n\nconst REVERSE_DOW_MAP = Object.fromEntries(Object.entries(DOW_MAP).map(entry => entry.reverse()));\n\nconst ALLOWED_FREQ = ['SECONDLY', 'MINUTELY', 'HOURLY',\n 'DAILY', 'WEEKLY', 'MONTHLY', 'YEARLY'];\n\n/**\n * This class represents the \"recur\" value type, used for example by RRULE. It provides methods to\n * calculate occurrences among others.\n *\n * @memberof ICAL\n */\nclass Recur {\n /**\n * Creates a new {@link ICAL.Recur} instance from the passed string.\n *\n * @param {String} string The string to parse\n * @return {Recur} The created recurrence instance\n */\n static fromString(string) {\n let data = this._stringToData(string, false);\n return new Recur(data);\n }\n\n /**\n * Creates a new {@link ICAL.Recur} instance using members from the passed\n * data object.\n *\n * @param {Object} aData An object with members of the recurrence\n * @param {frequencyValues=} aData.freq The frequency value\n * @param {Number=} aData.interval The INTERVAL value\n * @param {weekDay=} aData.wkst The week start value\n * @param {Time=} aData.until The end of the recurrence set\n * @param {Number=} aData.count The number of occurrences\n * @param {Array.=} aData.bysecond The seconds for the BYSECOND part\n * @param {Array.=} aData.byminute The minutes for the BYMINUTE part\n * @param {Array.=} aData.byhour The hours for the BYHOUR part\n * @param {Array.=} aData.byday The BYDAY values\n * @param {Array.=} aData.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} aData.byyearday The days for the BYYEARDAY part\n * @param {Array.=} aData.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} aData.bymonth The month for the BYMONTH part\n * @param {Array.=} aData.bysetpos The positionals for the BYSETPOS part\n */\n static fromData(aData) {\n return new Recur(aData);\n }\n\n /**\n * Converts a recurrence string to a data object, suitable for the fromData\n * method.\n *\n * @private\n * @param {String} string The string to parse\n * @param {Boolean} fmtIcal If true, the string is considered to be an\n * iCalendar string\n * @return {Recur} The recurrence instance\n */\n static _stringToData(string, fmtIcal) {\n let dict = Object.create(null);\n\n // split is slower in FF but fast enough.\n // v8 however this is faster then manual split?\n let values = string.split(';');\n let len = values.length;\n\n for (let i = 0; i < len; i++) {\n let parts = values[i].split('=');\n let ucname = parts[0].toUpperCase();\n let lcname = parts[0].toLowerCase();\n let name = (fmtIcal ? lcname : ucname);\n let value = parts[1];\n\n if (ucname in partDesign) {\n let partArr = value.split(',');\n let partSet = new Set();\n\n for (let part of partArr) {\n partSet.add(partDesign[ucname](part));\n }\n partArr = [...partSet];\n\n dict[name] = (partArr.length == 1 ? partArr[0] : partArr);\n } else if (ucname in optionDesign) {\n optionDesign[ucname](value, dict, fmtIcal);\n } else {\n // Don't swallow unknown values. Just set them as they are.\n dict[lcname] = value;\n }\n }\n\n return dict;\n }\n\n /**\n * Convert an ical representation of a day (SU, MO, etc..)\n * into a numeric value of that day.\n *\n * @param {String} string The iCalendar day name\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Number} Numeric value of given day\n */\n static icalDayToNumericDay(string, aWeekStart) {\n //XXX: this is here so we can deal\n // with possibly invalid string values.\n let firstDow = aWeekStart || Time.SUNDAY;\n return ((DOW_MAP[string] - firstDow + 7) % 7) + 1;\n }\n\n /**\n * Convert a numeric day value into its ical representation (SU, MO, etc..)\n *\n * @param {Number} num Numeric value of given day\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {String} The ICAL day value, e.g SU,MO,...\n */\n static numericDayToIcalDay(num, aWeekStart) {\n //XXX: this is here so we can deal with possibly invalid number values.\n // Also, this allows consistent mapping between day numbers and day\n // names for external users.\n let firstDow = aWeekStart || Time.SUNDAY;\n let dow = (num + firstDow - Time.SUNDAY);\n if (dow > 7) {\n dow -= 7;\n }\n return REVERSE_DOW_MAP[dow];\n }\n\n /**\n * Create a new instance of the Recur class.\n *\n * @param {Object} data An object with members of the recurrence\n * @param {frequencyValues=} data.freq The frequency value\n * @param {Number=} data.interval The INTERVAL value\n * @param {weekDay=} data.wkst The week start value\n * @param {Time=} data.until The end of the recurrence set\n * @param {Number=} data.count The number of occurrences\n * @param {Array.=} data.bysecond The seconds for the BYSECOND part\n * @param {Array.=} data.byminute The minutes for the BYMINUTE part\n * @param {Array.=} data.byhour The hours for the BYHOUR part\n * @param {Array.=} data.byday The BYDAY values\n * @param {Array.=} data.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} data.byyearday The days for the BYYEARDAY part\n * @param {Array.=} data.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} data.bymonth The month for the BYMONTH part\n * @param {Array.=} data.bysetpos The positionals for the BYSETPOS part\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.parts = {};\n\n if (data && typeof(data) === 'object') {\n this.fromData(data);\n }\n }\n\n /**\n * An object holding the BY-parts of the recurrence rule\n * @memberof ICAL.Recur\n * @typedef {Object} byParts\n * @property {Array.=} BYSECOND The seconds for the BYSECOND part\n * @property {Array.=} BYMINUTE The minutes for the BYMINUTE part\n * @property {Array.=} BYHOUR The hours for the BYHOUR part\n * @property {Array.=} BYDAY The BYDAY values\n * @property {Array.=} BYMONTHDAY The days for the BYMONTHDAY part\n * @property {Array.=} BYYEARDAY The days for the BYYEARDAY part\n * @property {Array.=} BYWEEKNO The weeks for the BYWEEKNO part\n * @property {Array.=} BYMONTH The month for the BYMONTH part\n * @property {Array.=} BYSETPOS The positionals for the BYSETPOS part\n */\n\n /**\n * An object holding the BY-parts of the recurrence rule\n * @type {byParts}\n */\n parts = null;\n\n /**\n * The interval value for the recurrence rule.\n * @type {Number}\n */\n interval = 1;\n\n /**\n * The week start day\n *\n * @type {weekDay}\n * @default ICAL.Time.MONDAY\n */\n wkst = Time.MONDAY;\n\n /**\n * The end of the recurrence\n * @type {?Time}\n */\n until = null;\n\n /**\n * The maximum number of occurrences\n * @type {?Number}\n */\n count = null;\n\n /**\n * The frequency value.\n * @type {frequencyValues}\n */\n freq = null;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalrecur\"\n */\n icalclass = \"icalrecur\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"recur\"\n */\n icaltype = \"recur\";\n\n /**\n * Create a new iterator for this recurrence rule. The passed start date\n * must be the start date of the event, not the start of the range to\n * search in.\n *\n * @example\n * let recur = comp.getFirstPropertyValue('rrule');\n * let dtstart = comp.getFirstPropertyValue('dtstart');\n * let iter = recur.iterator(dtstart);\n * for (let next = iter.next(); next; next = iter.next()) {\n * if (next.compare(rangeStart) < 0) {\n * continue;\n * }\n * console.log(next.toString());\n * }\n *\n * @param {Time} aStart The item's start date\n * @return {RecurIterator} The recurrence iterator\n */\n iterator(aStart) {\n return new RecurIterator({\n rule: this,\n dtstart: aStart\n });\n }\n\n /**\n * Returns a clone of the recurrence object.\n *\n * @return {Recur} The cloned object\n */\n clone() {\n return new Recur(this.toJSON());\n }\n\n /**\n * Checks if the current rule is finite, i.e. has a count or until part.\n *\n * @return {Boolean} True, if the rule is finite\n */\n isFinite() {\n return !!(this.count || this.until);\n }\n\n /**\n * Checks if the current rule has a count part, and not limited by an until\n * part.\n *\n * @return {Boolean} True, if the rule is by count\n */\n isByCount() {\n return !!(this.count && !this.until);\n }\n\n /**\n * Adds a component (part) to the recurrence rule. This is not a component\n * in the sense of {@link ICAL.Component}, but a part of the recurrence\n * rule, i.e. BYMONTH.\n *\n * @param {String} aType The name of the component part\n * @param {Array|String} aValue The component value\n */\n addComponent(aType, aValue) {\n let ucname = aType.toUpperCase();\n if (ucname in this.parts) {\n this.parts[ucname].push(aValue);\n } else {\n this.parts[ucname] = [aValue];\n }\n }\n\n /**\n * Sets the component value for the given by-part.\n *\n * @param {String} aType The component part name\n * @param {Array} aValues The component values\n */\n setComponent(aType, aValues) {\n this.parts[aType.toUpperCase()] = aValues.slice();\n }\n\n /**\n * Gets (a copy) of the requested component value.\n *\n * @param {String} aType The component part name\n * @return {Array} The component part value\n */\n getComponent(aType) {\n let ucname = aType.toUpperCase();\n return (ucname in this.parts ? this.parts[ucname].slice() : []);\n }\n\n /**\n * Retrieves the next occurrence after the given recurrence id. See the\n * guide on {@tutorial terminology} for more details.\n *\n * NOTE: Currently, this method iterates all occurrences from the start\n * date. It should not be called in a loop for performance reasons. If you\n * would like to get more than one occurrence, you can iterate the\n * occurrences manually, see the example on the\n * {@link ICAL.Recur#iterator iterator} method.\n *\n * @param {Time} aStartTime The start of the event series\n * @param {Time} aRecurrenceId The date of the last occurrence\n * @return {Time} The next occurrence after\n */\n getNextOccurrence(aStartTime, aRecurrenceId) {\n let iter = this.iterator(aStartTime);\n let next;\n\n do {\n next = iter.next();\n } while (next && next.compare(aRecurrenceId) <= 0);\n\n if (next && aRecurrenceId.zone) {\n next.zone = aRecurrenceId.zone;\n }\n\n return next;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} data An object with members of the recurrence\n * @param {frequencyValues=} data.freq The frequency value\n * @param {Number=} data.interval The INTERVAL value\n * @param {weekDay=} data.wkst The week start value\n * @param {Time=} data.until The end of the recurrence set\n * @param {Number=} data.count The number of occurrences\n * @param {Array.=} data.bysecond The seconds for the BYSECOND part\n * @param {Array.=} data.byminute The minutes for the BYMINUTE part\n * @param {Array.=} data.byhour The hours for the BYHOUR part\n * @param {Array.=} data.byday The BYDAY values\n * @param {Array.=} data.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} data.byyearday The days for the BYYEARDAY part\n * @param {Array.=} data.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} data.bymonth The month for the BYMONTH part\n * @param {Array.=} data.bysetpos The positionals for the BYSETPOS part\n */\n fromData(data) {\n for (let key in data) {\n let uckey = key.toUpperCase();\n\n if (uckey in partDesign) {\n if (Array.isArray(data[key])) {\n this.parts[uckey] = data[key];\n } else {\n this.parts[uckey] = [data[key]];\n }\n } else {\n this[key] = data[key];\n }\n }\n\n if (this.interval && typeof this.interval != \"number\") {\n optionDesign.INTERVAL(this.interval, this);\n }\n\n if (this.wkst && typeof this.wkst != \"number\") {\n this.wkst = Recur.icalDayToNumericDay(this.wkst);\n }\n\n if (this.until && !(this.until instanceof Time)) {\n this.until = Time.fromString(this.until);\n }\n }\n\n /**\n * The jCal representation of this recurrence type.\n * @return {Object}\n */\n toJSON() {\n let res = Object.create(null);\n res.freq = this.freq;\n\n if (this.count) {\n res.count = this.count;\n }\n\n if (this.interval > 1) {\n res.interval = this.interval;\n }\n\n for (let [k, kparts] of Object.entries(this.parts)) {\n if (Array.isArray(kparts) && kparts.length == 1) {\n res[k.toLowerCase()] = kparts[0];\n } else {\n res[k.toLowerCase()] = clone(kparts);\n }\n }\n\n if (this.until) {\n res.until = this.until.toString();\n }\n if ('wkst' in this && this.wkst !== Time.DEFAULT_WEEK_START) {\n res.wkst = Recur.numericDayToIcalDay(this.wkst);\n }\n return res;\n }\n\n /**\n * The string representation of this recurrence rule.\n * @return {String}\n */\n toString() {\n // TODO retain order\n let str = \"FREQ=\" + this.freq;\n if (this.count) {\n str += \";COUNT=\" + this.count;\n }\n if (this.interval > 1) {\n str += \";INTERVAL=\" + this.interval;\n }\n for (let [k, v] of Object.entries(this.parts)) {\n str += \";\" + k + \"=\" + v;\n }\n if (this.until) {\n str += ';UNTIL=' + this.until.toICALString();\n }\n if ('wkst' in this && this.wkst !== Time.DEFAULT_WEEK_START) {\n str += ';WKST=' + Recur.numericDayToIcalDay(this.wkst);\n }\n return str;\n }\n}\n\nfunction parseNumericValue(type, min, max, value) {\n let result = value;\n\n if (value[0] === '+') {\n result = value.slice(1);\n }\n\n result = strictParseInt(result);\n\n if (min !== undefined && value < min) {\n throw new Error(\n type + ': invalid value \"' + value + '\" must be > ' + min\n );\n }\n\n if (max !== undefined && value > max) {\n throw new Error(\n type + ': invalid value \"' + value + '\" must be < ' + min\n );\n }\n\n return result;\n}\n\nconst optionDesign = {\n FREQ: function(value, dict, fmtIcal) {\n // yes this is actually equal or faster then regex.\n // upside here is we can enumerate the valid values.\n if (ALLOWED_FREQ.indexOf(value) !== -1) {\n dict.freq = value;\n } else {\n throw new Error(\n 'invalid frequency \"' + value + '\" expected: \"' +\n ALLOWED_FREQ.join(', ') + '\"'\n );\n }\n },\n\n COUNT: function(value, dict, fmtIcal) {\n dict.count = strictParseInt(value);\n },\n\n INTERVAL: function(value, dict, fmtIcal) {\n dict.interval = strictParseInt(value);\n if (dict.interval < 1) {\n // 0 or negative values are not allowed, some engines seem to generate\n // it though. Assume 1 instead.\n dict.interval = 1;\n }\n },\n\n UNTIL: function(value, dict, fmtIcal) {\n if (value.length > 10) {\n dict.until = design.icalendar.value['date-time'].fromICAL(value);\n } else {\n dict.until = design.icalendar.value.date.fromICAL(value);\n }\n if (!fmtIcal) {\n dict.until = Time.fromString(dict.until);\n }\n },\n\n WKST: function(value, dict, fmtIcal) {\n if (VALID_DAY_NAMES.test(value)) {\n dict.wkst = Recur.icalDayToNumericDay(value);\n } else {\n throw new Error('invalid WKST value \"' + value + '\"');\n }\n }\n};\n\nconst partDesign = {\n BYSECOND: parseNumericValue.bind(undefined, 'BYSECOND', 0, 60),\n BYMINUTE: parseNumericValue.bind(undefined, 'BYMINUTE', 0, 59),\n BYHOUR: parseNumericValue.bind(undefined, 'BYHOUR', 0, 23),\n BYDAY: function(value) {\n if (VALID_BYDAY_PART.test(value)) {\n return value;\n } else {\n throw new Error('invalid BYDAY value \"' + value + '\"');\n }\n },\n BYMONTHDAY: parseNumericValue.bind(undefined, 'BYMONTHDAY', -31, 31),\n BYYEARDAY: parseNumericValue.bind(undefined, 'BYYEARDAY', -366, 366),\n BYWEEKNO: parseNumericValue.bind(undefined, 'BYWEEKNO', -53, 53),\n BYMONTH: parseNumericValue.bind(undefined, 'BYMONTH', 1, 12),\n BYSETPOS: parseNumericValue.bind(undefined, 'BYSETPOS', -366, 366)\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\n/** @module ICAL.design */\n\nconst FROM_ICAL_NEWLINE = /\\\\\\\\|\\\\;|\\\\,|\\\\[Nn]/g;\nconst TO_ICAL_NEWLINE = /\\\\|;|,|\\n/g;\nconst FROM_VCARD_NEWLINE = /\\\\\\\\|\\\\,|\\\\[Nn]/g;\nconst TO_VCARD_NEWLINE = /\\\\|,|\\n/g;\n\nfunction createTextType(fromNewline, toNewline) {\n let result = {\n matches: /.*/,\n\n fromICAL: function(aValue, structuredEscape) {\n return replaceNewline(aValue, fromNewline, structuredEscape);\n },\n\n toICAL: function(aValue, structuredEscape) {\n let regEx = toNewline;\n if (structuredEscape)\n regEx = new RegExp(regEx.source + '|' + structuredEscape, regEx.flags);\n return aValue.replace(regEx, function(str) {\n switch (str) {\n case \"\\\\\":\n return \"\\\\\\\\\";\n case \";\":\n return \"\\\\;\";\n case \",\":\n return \"\\\\,\";\n case \"\\n\":\n return \"\\\\n\";\n /* c8 ignore next 2 */\n default:\n return str;\n }\n });\n }\n };\n return result;\n}\n\n// default types used multiple times\nconst DEFAULT_TYPE_TEXT = { defaultType: \"text\" };\nconst DEFAULT_TYPE_TEXT_MULTI = { defaultType: \"text\", multiValue: \",\" };\nconst DEFAULT_TYPE_TEXT_STRUCTURED = { defaultType: \"text\", structuredValue: \";\" };\nconst DEFAULT_TYPE_INTEGER = { defaultType: \"integer\" };\nconst DEFAULT_TYPE_DATETIME_DATE = { defaultType: \"date-time\", allowedTypes: [\"date-time\", \"date\"] };\nconst DEFAULT_TYPE_DATETIME = { defaultType: \"date-time\" };\nconst DEFAULT_TYPE_URI = { defaultType: \"uri\" };\nconst DEFAULT_TYPE_UTCOFFSET = { defaultType: \"utc-offset\" };\nconst DEFAULT_TYPE_RECUR = { defaultType: \"recur\" };\nconst DEFAULT_TYPE_DATE_ANDOR_TIME = { defaultType: \"date-and-or-time\", allowedTypes: [\"date-time\", \"date\", \"text\"] };\n\nfunction replaceNewlineReplace(string) {\n switch (string) {\n case \"\\\\\\\\\":\n return \"\\\\\";\n case \"\\\\;\":\n return \";\";\n case \"\\\\,\":\n return \",\";\n case \"\\\\n\":\n case \"\\\\N\":\n return \"\\n\";\n /* c8 ignore next 2 */\n default:\n return string;\n }\n}\n\nfunction replaceNewline(value, newline, structuredEscape) {\n // avoid regex when possible.\n if (value.indexOf('\\\\') === -1) {\n return value;\n }\n if (structuredEscape)\n newline = new RegExp(newline.source + '|\\\\\\\\' + structuredEscape, newline.flags);\n return value.replace(newline, replaceNewlineReplace);\n}\n\nlet commonProperties = {\n \"categories\": DEFAULT_TYPE_TEXT_MULTI,\n \"url\": DEFAULT_TYPE_URI,\n \"version\": DEFAULT_TYPE_TEXT,\n \"uid\": DEFAULT_TYPE_TEXT\n};\n\nlet commonValues = {\n \"boolean\": {\n values: [\"TRUE\", \"FALSE\"],\n\n fromICAL: function(aValue) {\n switch (aValue) {\n case 'TRUE':\n return true;\n case 'FALSE':\n return false;\n default:\n //TODO: parser warning\n return false;\n }\n },\n\n toICAL: function(aValue) {\n if (aValue) {\n return 'TRUE';\n }\n return 'FALSE';\n }\n\n },\n float: {\n matches: /^[+-]?\\d+\\.\\d+$/,\n\n fromICAL: function(aValue) {\n let parsed = parseFloat(aValue);\n if (isStrictlyNaN(parsed)) {\n // TODO: parser warning\n return 0.0;\n }\n return parsed;\n },\n\n toICAL: function(aValue) {\n return String(aValue);\n }\n },\n integer: {\n fromICAL: function(aValue) {\n let parsed = parseInt(aValue);\n if (isStrictlyNaN(parsed)) {\n return 0;\n }\n return parsed;\n },\n\n toICAL: function(aValue) {\n return String(aValue);\n }\n },\n \"utc-offset\": {\n toICAL: function(aValue) {\n if (aValue.length < 7) {\n // no seconds\n // -0500\n return aValue.slice(0, 3) +\n aValue.slice(4, 6);\n } else {\n // seconds\n // -050000\n return aValue.slice(0, 3) +\n aValue.slice(4, 6) +\n aValue.slice(7, 9);\n }\n },\n\n fromICAL: function(aValue) {\n if (aValue.length < 6) {\n // no seconds\n // -05:00\n return aValue.slice(0, 3) + ':' +\n aValue.slice(3, 5);\n } else {\n // seconds\n // -05:00:00\n return aValue.slice(0, 3) + ':' +\n aValue.slice(3, 5) + ':' +\n aValue.slice(5, 7);\n }\n },\n\n decorate: function(aValue) {\n return UtcOffset.fromString(aValue);\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n }\n};\n\nlet icalParams = {\n // Although the syntax is DQUOTE uri DQUOTE, I don't think we should\n // enforce anything aside from it being a valid content line.\n //\n // At least some params require - if multi values are used - DQUOTEs\n // for each of its values - e.g. delegated-from=\"uri1\",\"uri2\"\n // To indicate this, I introduced the new k/v pair\n // multiValueSeparateDQuote: true\n //\n // \"ALTREP\": { ... },\n\n // CN just wants a param-value\n // \"CN\": { ... }\n\n \"cutype\": {\n values: [\"INDIVIDUAL\", \"GROUP\", \"RESOURCE\", \"ROOM\", \"UNKNOWN\"],\n allowXName: true,\n allowIanaToken: true\n },\n\n \"delegated-from\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n \"delegated-to\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n // \"DIR\": { ... }, // See ALTREP\n \"encoding\": {\n values: [\"8BIT\", \"BASE64\"]\n },\n // \"FMTTYPE\": { ... }, // See ALTREP\n \"fbtype\": {\n values: [\"FREE\", \"BUSY\", \"BUSY-UNAVAILABLE\", \"BUSY-TENTATIVE\"],\n allowXName: true,\n allowIanaToken: true\n },\n // \"LANGUAGE\": { ... }, // See ALTREP\n \"member\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n \"partstat\": {\n // TODO These values are actually different per-component\n values: [\"NEEDS-ACTION\", \"ACCEPTED\", \"DECLINED\", \"TENTATIVE\",\n \"DELEGATED\", \"COMPLETED\", \"IN-PROCESS\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"range\": {\n values: [\"THISANDFUTURE\"]\n },\n \"related\": {\n values: [\"START\", \"END\"]\n },\n \"reltype\": {\n values: [\"PARENT\", \"CHILD\", \"SIBLING\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"role\": {\n values: [\"REQ-PARTICIPANT\", \"CHAIR\",\n \"OPT-PARTICIPANT\", \"NON-PARTICIPANT\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"rsvp\": {\n values: [\"TRUE\", \"FALSE\"]\n },\n \"sent-by\": {\n valueType: \"cal-address\"\n },\n \"tzid\": {\n matches: /^\\//\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"binary\", \"boolean\", \"cal-address\", \"date\", \"date-time\",\n \"duration\", \"float\", \"integer\", \"period\", \"recur\", \"text\",\n \"time\", \"uri\", \"utc-offset\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\n// When adding a value here, be sure to add it to the parameter types!\nconst icalValues = extend(commonValues, {\n text: createTextType(FROM_ICAL_NEWLINE, TO_ICAL_NEWLINE),\n\n uri: {\n // TODO\n /* ... */\n },\n\n \"binary\": {\n decorate: function(aString) {\n return Binary.fromString(aString);\n },\n\n undecorate: function(aBinary) {\n return aBinary.toString();\n }\n },\n \"cal-address\": {\n // needs to be an uri\n },\n \"date\": {\n decorate: function(aValue, aProp) {\n if (design.strict) {\n return Time.fromDateString(aValue, aProp);\n } else {\n return Time.fromString(aValue, aProp);\n }\n },\n\n /**\n * undecorates a time object.\n */\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n // from: 20120901\n // to: 2012-09-01\n if (!design.strict && aValue.length >= 15) {\n // This is probably a date-time, e.g. 20120901T130000Z\n return icalValues[\"date-time\"].fromICAL(aValue);\n } else {\n return aValue.slice(0, 4) + '-' +\n aValue.slice(4, 6) + '-' +\n aValue.slice(6, 8);\n }\n },\n\n toICAL: function(aValue) {\n // from: 2012-09-01\n // to: 20120901\n let len = aValue.length;\n\n if (len == 10) {\n return aValue.slice(0, 4) +\n aValue.slice(5, 7) +\n aValue.slice(8, 10);\n } else if (len >= 19) {\n return icalValues[\"date-time\"].toICAL(aValue);\n } else {\n //TODO: serialize warning?\n return aValue;\n }\n\n }\n },\n \"date-time\": {\n fromICAL: function(aValue) {\n // from: 20120901T130000\n // to: 2012-09-01T13:00:00\n if (!design.strict && aValue.length == 8) {\n // This is probably a date, e.g. 20120901\n return icalValues.date.fromICAL(aValue);\n } else {\n let result = aValue.slice(0, 4) + '-' +\n aValue.slice(4, 6) + '-' +\n aValue.slice(6, 8) + 'T' +\n aValue.slice(9, 11) + ':' +\n aValue.slice(11, 13) + ':' +\n aValue.slice(13, 15);\n\n if (aValue[15] && aValue[15] === 'Z') {\n result += 'Z';\n }\n\n return result;\n }\n },\n\n toICAL: function(aValue) {\n // from: 2012-09-01T13:00:00\n // to: 20120901T130000\n let len = aValue.length;\n\n if (len == 10 && !design.strict) {\n return icalValues.date.toICAL(aValue);\n } else if (len >= 19) {\n let result = aValue.slice(0, 4) +\n aValue.slice(5, 7) +\n // grab the (DDTHH) segment\n aValue.slice(8, 13) +\n // MM\n aValue.slice(14, 16) +\n // SS\n aValue.slice(17, 19);\n\n if (aValue[19] && aValue[19] === 'Z') {\n result += 'Z';\n }\n return result;\n } else {\n // TODO: error\n return aValue;\n }\n },\n\n decorate: function(aValue, aProp) {\n if (design.strict) {\n return Time.fromDateTimeString(aValue, aProp);\n } else {\n return Time.fromString(aValue, aProp);\n }\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n },\n duration: {\n decorate: function(aValue) {\n return Duration.fromString(aValue);\n },\n undecorate: function(aValue) {\n return aValue.toString();\n }\n },\n period: {\n fromICAL: function(string) {\n let parts = string.split('/');\n parts[0] = icalValues['date-time'].fromICAL(parts[0]);\n\n if (!Duration.isValueString(parts[1])) {\n parts[1] = icalValues['date-time'].fromICAL(parts[1]);\n }\n\n return parts;\n },\n\n toICAL: function(parts) {\n parts = parts.slice();\n if (!design.strict && parts[0].length == 10) {\n parts[0] = icalValues.date.toICAL(parts[0]);\n } else {\n parts[0] = icalValues['date-time'].toICAL(parts[0]);\n }\n\n if (!Duration.isValueString(parts[1])) {\n if (!design.strict && parts[1].length == 10) {\n parts[1] = icalValues.date.toICAL(parts[1]);\n } else {\n parts[1] = icalValues['date-time'].toICAL(parts[1]);\n }\n }\n\n return parts.join(\"/\");\n },\n\n decorate: function(aValue, aProp) {\n return Period.fromJSON(aValue, aProp, !design.strict);\n },\n\n undecorate: function(aValue) {\n return aValue.toJSON();\n }\n },\n recur: {\n fromICAL: function(string) {\n return Recur._stringToData(string, true);\n },\n\n toICAL: function(data) {\n let str = \"\";\n for (let [k, val] of Object.entries(data)) {\n if (k == \"until\") {\n if (val.length > 10) {\n val = icalValues['date-time'].toICAL(val);\n } else {\n val = icalValues.date.toICAL(val);\n }\n } else if (k == \"wkst\") {\n if (typeof val === 'number') {\n val = Recur.numericDayToIcalDay(val);\n }\n } else if (Array.isArray(val)) {\n val = val.join(\",\");\n }\n str += k.toUpperCase() + \"=\" + val + \";\";\n }\n return str.slice(0, Math.max(0, str.length - 1));\n },\n\n decorate: function decorate(aValue) {\n return Recur.fromData(aValue);\n },\n\n undecorate: function(aRecur) {\n return aRecur.toJSON();\n }\n },\n\n time: {\n fromICAL: function(aValue) {\n // from: MMHHSS(Z)?\n // to: HH:MM:SS(Z)?\n if (aValue.length < 6) {\n // TODO: parser exception?\n return aValue;\n }\n\n // HH::MM::SSZ?\n let result = aValue.slice(0, 2) + ':' +\n aValue.slice(2, 4) + ':' +\n aValue.slice(4, 6);\n\n if (aValue[6] === 'Z') {\n result += 'Z';\n }\n\n return result;\n },\n\n toICAL: function(aValue) {\n // from: HH:MM:SS(Z)?\n // to: MMHHSS(Z)?\n if (aValue.length < 8) {\n //TODO: error\n return aValue;\n }\n\n let result = aValue.slice(0, 2) +\n aValue.slice(3, 5) +\n aValue.slice(6, 8);\n\n if (aValue[8] === 'Z') {\n result += 'Z';\n }\n\n return result;\n }\n }\n});\n\nlet icalProperties = extend(commonProperties, {\n\n \"action\": DEFAULT_TYPE_TEXT,\n \"attach\": { defaultType: \"uri\" },\n \"attendee\": { defaultType: \"cal-address\" },\n \"calscale\": DEFAULT_TYPE_TEXT,\n \"class\": DEFAULT_TYPE_TEXT,\n \"comment\": DEFAULT_TYPE_TEXT,\n \"completed\": DEFAULT_TYPE_DATETIME,\n \"contact\": DEFAULT_TYPE_TEXT,\n \"created\": DEFAULT_TYPE_DATETIME,\n \"description\": DEFAULT_TYPE_TEXT,\n \"dtend\": DEFAULT_TYPE_DATETIME_DATE,\n \"dtstamp\": DEFAULT_TYPE_DATETIME,\n \"dtstart\": DEFAULT_TYPE_DATETIME_DATE,\n \"due\": DEFAULT_TYPE_DATETIME_DATE,\n \"duration\": { defaultType: \"duration\" },\n \"exdate\": {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n multiValue: ','\n },\n \"exrule\": DEFAULT_TYPE_RECUR,\n \"freebusy\": { defaultType: \"period\", multiValue: \",\" },\n \"geo\": { defaultType: \"float\", structuredValue: \";\" },\n \"last-modified\": DEFAULT_TYPE_DATETIME,\n \"location\": DEFAULT_TYPE_TEXT,\n \"method\": DEFAULT_TYPE_TEXT,\n \"organizer\": { defaultType: \"cal-address\" },\n \"percent-complete\": DEFAULT_TYPE_INTEGER,\n \"priority\": DEFAULT_TYPE_INTEGER,\n \"prodid\": DEFAULT_TYPE_TEXT,\n \"related-to\": DEFAULT_TYPE_TEXT,\n \"repeat\": DEFAULT_TYPE_INTEGER,\n \"rdate\": {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\", \"period\"],\n multiValue: ',',\n detectType: function(string) {\n if (string.indexOf('/') !== -1) {\n return 'period';\n }\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n \"recurrence-id\": DEFAULT_TYPE_DATETIME_DATE,\n \"resources\": DEFAULT_TYPE_TEXT_MULTI,\n \"request-status\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"rrule\": DEFAULT_TYPE_RECUR,\n \"sequence\": DEFAULT_TYPE_INTEGER,\n \"status\": DEFAULT_TYPE_TEXT,\n \"summary\": DEFAULT_TYPE_TEXT,\n \"transp\": DEFAULT_TYPE_TEXT,\n \"trigger\": { defaultType: \"duration\", allowedTypes: [\"duration\", \"date-time\"] },\n \"tzoffsetfrom\": DEFAULT_TYPE_UTCOFFSET,\n \"tzoffsetto\": DEFAULT_TYPE_UTCOFFSET,\n \"tzurl\": DEFAULT_TYPE_URI,\n \"tzid\": DEFAULT_TYPE_TEXT,\n \"tzname\": DEFAULT_TYPE_TEXT\n});\n\n// When adding a value here, be sure to add it to the parameter types!\nconst vcardValues = extend(commonValues, {\n text: createTextType(FROM_VCARD_NEWLINE, TO_VCARD_NEWLINE),\n uri: createTextType(FROM_VCARD_NEWLINE, TO_VCARD_NEWLINE),\n\n date: {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date\");\n },\n undecorate: function(aValue) {\n return aValue.toString();\n },\n fromICAL: function(aValue) {\n if (aValue.length == 8) {\n return icalValues.date.fromICAL(aValue);\n } else if (aValue[0] == '-' && aValue.length == 6) {\n return aValue.slice(0, 4) + '-' + aValue.slice(4);\n } else {\n return aValue;\n }\n },\n toICAL: function(aValue) {\n if (aValue.length == 10) {\n return icalValues.date.toICAL(aValue);\n } else if (aValue[0] == '-' && aValue.length == 7) {\n return aValue.slice(0, 4) + aValue.slice(5);\n } else {\n return aValue;\n }\n }\n },\n\n time: {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(\"T\" + aValue, \"time\");\n },\n undecorate: function(aValue) {\n return aValue.toString();\n },\n fromICAL: function(aValue) {\n let splitzone = vcardValues.time._splitZone(aValue, true);\n let zone = splitzone[0], value = splitzone[1];\n\n //console.log(\"SPLIT: \",splitzone);\n\n if (value.length == 6) {\n value = value.slice(0, 2) + ':' +\n value.slice(2, 4) + ':' +\n value.slice(4, 6);\n } else if (value.length == 4 && value[0] != '-') {\n value = value.slice(0, 2) + ':' + value.slice(2, 4);\n } else if (value.length == 5) {\n value = value.slice(0, 3) + ':' + value.slice(3, 5);\n }\n\n if (zone.length == 5 && (zone[0] == '-' || zone[0] == '+')) {\n zone = zone.slice(0, 3) + ':' + zone.slice(3);\n }\n\n return value + zone;\n },\n\n toICAL: function(aValue) {\n let splitzone = vcardValues.time._splitZone(aValue);\n let zone = splitzone[0], value = splitzone[1];\n\n if (value.length == 8) {\n value = value.slice(0, 2) +\n value.slice(3, 5) +\n value.slice(6, 8);\n } else if (value.length == 5 && value[0] != '-') {\n value = value.slice(0, 2) + value.slice(3, 5);\n } else if (value.length == 6) {\n value = value.slice(0, 3) + value.slice(4, 6);\n }\n\n if (zone.length == 6 && (zone[0] == '-' || zone[0] == '+')) {\n zone = zone.slice(0, 3) + zone.slice(4);\n }\n\n return value + zone;\n },\n\n _splitZone: function(aValue, isFromIcal) {\n let lastChar = aValue.length - 1;\n let signChar = aValue.length - (isFromIcal ? 5 : 6);\n let sign = aValue[signChar];\n let zone, value;\n\n if (aValue[lastChar] == 'Z') {\n zone = aValue[lastChar];\n value = aValue.slice(0, Math.max(0, lastChar));\n } else if (aValue.length > 6 && (sign == '-' || sign == '+')) {\n zone = aValue.slice(signChar);\n value = aValue.slice(0, Math.max(0, signChar));\n } else {\n zone = \"\";\n value = aValue;\n }\n\n return [zone, value];\n }\n },\n\n \"date-time\": {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date-time\");\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n return vcardValues['date-and-or-time'].fromICAL(aValue);\n },\n\n toICAL: function(aValue) {\n return vcardValues['date-and-or-time'].toICAL(aValue);\n }\n },\n\n \"date-and-or-time\": {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date-and-or-time\");\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n let parts = aValue.split('T');\n return (parts[0] ? vcardValues.date.fromICAL(parts[0]) : '') +\n (parts[1] ? 'T' + vcardValues.time.fromICAL(parts[1]) : '');\n },\n\n toICAL: function(aValue) {\n let parts = aValue.split('T');\n return vcardValues.date.toICAL(parts[0]) +\n (parts[1] ? 'T' + vcardValues.time.toICAL(parts[1]) : '');\n\n }\n },\n timestamp: icalValues['date-time'],\n \"language-tag\": {\n matches: /^[a-zA-Z0-9-]+$/ // Could go with a more strict regex here\n },\n \"phone-number\": {\n fromICAL: function(aValue) {\n return Array.from(aValue).filter(function(c) {\n return c === '\\\\' ? undefined : c;\n }).join('');\n },\n toICAL: function(aValue) {\n return Array.from(aValue).map(function(c) {\n return c === ',' || c === \";\" ? '\\\\' + c : c;\n }).join('');\n }\n }\n});\n\nlet vcardParams = {\n \"type\": {\n valueType: \"text\",\n multiValue: \",\"\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"text\", \"uri\", \"date\", \"time\", \"date-time\", \"date-and-or-time\",\n \"timestamp\", \"boolean\", \"integer\", \"float\", \"utc-offset\",\n \"language-tag\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\nlet vcardProperties = extend(commonProperties, {\n \"adr\": { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n \"anniversary\": DEFAULT_TYPE_DATE_ANDOR_TIME,\n \"bday\": DEFAULT_TYPE_DATE_ANDOR_TIME,\n \"caladruri\": DEFAULT_TYPE_URI,\n \"caluri\": DEFAULT_TYPE_URI,\n \"clientpidmap\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"email\": DEFAULT_TYPE_TEXT,\n \"fburl\": DEFAULT_TYPE_URI,\n \"fn\": DEFAULT_TYPE_TEXT,\n \"gender\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"geo\": DEFAULT_TYPE_URI,\n \"impp\": DEFAULT_TYPE_URI,\n \"key\": DEFAULT_TYPE_URI,\n \"kind\": DEFAULT_TYPE_TEXT,\n \"lang\": { defaultType: \"language-tag\" },\n \"logo\": DEFAULT_TYPE_URI,\n \"member\": DEFAULT_TYPE_URI,\n \"n\": { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n \"nickname\": DEFAULT_TYPE_TEXT_MULTI,\n \"note\": DEFAULT_TYPE_TEXT,\n \"org\": { defaultType: \"text\", structuredValue: \";\" },\n \"photo\": DEFAULT_TYPE_URI,\n \"related\": DEFAULT_TYPE_URI,\n \"rev\": { defaultType: \"timestamp\" },\n \"role\": DEFAULT_TYPE_TEXT,\n \"sound\": DEFAULT_TYPE_URI,\n \"source\": DEFAULT_TYPE_URI,\n \"tel\": { defaultType: \"uri\", allowedTypes: [\"uri\", \"text\"] },\n \"title\": DEFAULT_TYPE_TEXT,\n \"tz\": { defaultType: \"text\", allowedTypes: [\"text\", \"utc-offset\", \"uri\"] },\n \"xml\": DEFAULT_TYPE_TEXT\n});\n\nlet vcard3Values = extend(commonValues, {\n binary: icalValues.binary,\n date: vcardValues.date,\n \"date-time\": vcardValues[\"date-time\"],\n \"phone-number\": vcardValues[\"phone-number\"],\n uri: icalValues.uri,\n text: vcardValues.text,\n time: icalValues.time,\n vcard: icalValues.text,\n \"utc-offset\": {\n toICAL: function(aValue) {\n return aValue.slice(0, 7);\n },\n\n fromICAL: function(aValue) {\n return aValue.slice(0, 7);\n },\n\n decorate: function(aValue) {\n return UtcOffset.fromString(aValue);\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n }\n});\n\nlet vcard3Params = {\n \"type\": {\n valueType: \"text\",\n multiValue: \",\"\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"text\", \"uri\", \"date\", \"date-time\", \"phone-number\", \"time\",\n \"boolean\", \"integer\", \"float\", \"utc-offset\", \"vcard\", \"binary\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\nlet vcard3Properties = extend(commonProperties, {\n fn: DEFAULT_TYPE_TEXT,\n n: { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n nickname: DEFAULT_TYPE_TEXT_MULTI,\n photo: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n bday: {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n detectType: function(string) {\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n\n adr: { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n label: DEFAULT_TYPE_TEXT,\n\n tel: { defaultType: \"phone-number\" },\n email: DEFAULT_TYPE_TEXT,\n mailer: DEFAULT_TYPE_TEXT,\n\n tz: { defaultType: \"utc-offset\", allowedTypes: [\"utc-offset\", \"text\"] },\n geo: { defaultType: \"float\", structuredValue: \";\" },\n\n title: DEFAULT_TYPE_TEXT,\n role: DEFAULT_TYPE_TEXT,\n logo: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n agent: { defaultType: \"vcard\", allowedTypes: [\"vcard\", \"text\", \"uri\"] },\n org: DEFAULT_TYPE_TEXT_STRUCTURED,\n\n note: DEFAULT_TYPE_TEXT_MULTI,\n prodid: DEFAULT_TYPE_TEXT,\n rev: {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n detectType: function(string) {\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n \"sort-string\": DEFAULT_TYPE_TEXT,\n sound: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n\n class: DEFAULT_TYPE_TEXT,\n key: { defaultType: \"binary\", allowedTypes: [\"binary\", \"text\"] }\n});\n\n/**\n * iCalendar design set\n * @type {designSet}\n */\nlet icalSet = {\n name: \"ical\",\n value: icalValues,\n param: icalParams,\n property: icalProperties,\n propertyGroups: false\n};\n\n/**\n * vCard 4.0 design set\n * @type {designSet}\n */\nlet vcardSet = {\n name: \"vcard4\",\n value: vcardValues,\n param: vcardParams,\n property: vcardProperties,\n propertyGroups: true\n};\n\n/**\n * vCard 3.0 design set\n * @type {designSet}\n */\nlet vcard3Set = {\n name: \"vcard3\",\n value: vcard3Values,\n param: vcard3Params,\n property: vcard3Properties,\n propertyGroups: true\n};\n\n/**\n * The design data, used by the parser to determine types for properties and\n * other metadata needed to produce correct jCard/jCal data.\n *\n * @alias ICAL.design\n * @exports module:ICAL.design\n */\nconst design = {\n /**\n * Can be set to false to make the parser more lenient.\n */\n strict: true,\n\n /**\n * The default set for new properties and components if none is specified.\n * @type {designSet}\n */\n defaultSet: icalSet,\n\n /**\n * The default type for unknown properties\n * @type {String}\n */\n defaultType: 'unknown',\n\n /**\n * Holds the design set for known top-level components\n *\n * @type {Object}\n * @property {designSet} vcard vCard VCARD\n * @property {designSet} vevent iCalendar VEVENT\n * @property {designSet} vtodo iCalendar VTODO\n * @property {designSet} vjournal iCalendar VJOURNAL\n * @property {designSet} valarm iCalendar VALARM\n * @property {designSet} vtimezone iCalendar VTIMEZONE\n * @property {designSet} daylight iCalendar DAYLIGHT\n * @property {designSet} standard iCalendar STANDARD\n *\n * @example\n * let propertyName = 'fn';\n * let componentDesign = ICAL.design.components.vcard;\n * let propertyDetails = componentDesign.property[propertyName];\n * if (propertyDetails.defaultType == 'text') {\n * // Yep, sure is...\n * }\n */\n components: {\n vcard: vcardSet,\n vcard3: vcard3Set,\n vevent: icalSet,\n vtodo: icalSet,\n vjournal: icalSet,\n valarm: icalSet,\n vtimezone: icalSet,\n daylight: icalSet,\n standard: icalSet\n },\n\n\n /**\n * The design set for iCalendar (rfc5545/rfc7265) components.\n * @type {designSet}\n */\n icalendar: icalSet,\n\n /**\n * The design set for vCard (rfc6350/rfc7095) components.\n * @type {designSet}\n */\n vcard: vcardSet,\n\n /**\n * The design set for vCard (rfc2425/rfc2426/rfc7095) components.\n * @type {designSet}\n */\n vcard3: vcard3Set,\n\n /**\n * Gets the design set for the given component name.\n *\n * @param {String} componentName The name of the component\n * @return {designSet} The design set for the component\n */\n getDesignSet: function(componentName) {\n let isInDesign = componentName && componentName in design.components;\n return isInDesign ? design.components[componentName] : design.defaultSet;\n }\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\nconst LINE_ENDING = '\\r\\n';\nconst DEFAULT_VALUE_TYPE = 'unknown';\nconst RFC6868_REPLACE_MAP = { '\"': \"^'\", \"\\n\": \"^n\", \"^\": \"^^\" };\n\n/**\n * Convert a full jCal/jCard array into a iCalendar/vCard string.\n *\n * @function ICAL.stringify\n * @variation function\n * @param {Array} jCal The jCal/jCard document\n * @return {String} The stringified iCalendar/vCard document\n */\nfunction stringify(jCal) {\n if (typeof jCal[0] == \"string\") {\n // This is a single component\n jCal = [jCal];\n }\n\n let i = 0;\n let len = jCal.length;\n let result = '';\n\n for (; i < len; i++) {\n result += stringify.component(jCal[i]) + LINE_ENDING;\n }\n\n return result;\n}\n\n/**\n * Converts an jCal component array into a ICAL string.\n * Recursive will resolve sub-components.\n *\n * Exact component/property order is not saved all\n * properties will come before subcomponents.\n *\n * @function ICAL.stringify.component\n * @param {Array} component\n * jCal/jCard fragment of a component\n * @param {designSet} designSet\n * The design data to use for this component\n * @return {String} The iCalendar/vCard string\n */\nstringify.component = function(component, designSet) {\n let name = component[0].toUpperCase();\n let result = 'BEGIN:' + name + LINE_ENDING;\n\n let props = component[1];\n let propIdx = 0;\n let propLen = props.length;\n\n let designSetName = component[0];\n // rfc6350 requires that in vCard 4.0 the first component is the VERSION\n // component with as value 4.0, note that 3.0 does not have this requirement.\n if (designSetName === 'vcard' && component[1].length > 0 &&\n !(component[1][0][0] === \"version\" && component[1][0][3] === \"4.0\")) {\n designSetName = \"vcard3\";\n }\n designSet = designSet || design.getDesignSet(designSetName);\n\n for (; propIdx < propLen; propIdx++) {\n result += stringify.property(props[propIdx], designSet) + LINE_ENDING;\n }\n\n // Ignore subcomponents if none exist, e.g. in vCard.\n let comps = component[2] || [];\n let compIdx = 0;\n let compLen = comps.length;\n\n for (; compIdx < compLen; compIdx++) {\n result += stringify.component(comps[compIdx], designSet) + LINE_ENDING;\n }\n\n result += 'END:' + name;\n return result;\n};\n\n/**\n * Converts a single jCal/jCard property to a iCalendar/vCard string.\n *\n * @function ICAL.stringify.property\n * @param {Array} property\n * jCal/jCard property array\n * @param {designSet} designSet\n * The design data to use for this property\n * @param {Boolean} noFold\n * If true, the line is not folded\n * @return {String} The iCalendar/vCard string\n */\nstringify.property = function(property, designSet, noFold) {\n let name = property[0].toUpperCase();\n let jsName = property[0];\n let params = property[1];\n\n if (!designSet) {\n designSet = design.defaultSet;\n }\n\n let groupName = params.group;\n let line;\n if (designSet.propertyGroups && groupName) {\n line = groupName.toUpperCase() + \".\" + name;\n } else {\n line = name;\n }\n\n for (let [paramName, value] of Object.entries(params)) {\n if (designSet.propertyGroups && paramName == 'group') {\n continue;\n }\n\n let paramDesign = designSet.param[paramName];\n let multiValue = paramDesign && paramDesign.multiValue;\n if (multiValue && Array.isArray(value)) {\n value = value.map(function(val) {\n val = stringify._rfc6868Unescape(val);\n val = stringify.paramPropertyValue(val, paramDesign.multiValueSeparateDQuote);\n return val;\n });\n value = stringify.multiValue(value, multiValue, \"unknown\", null, designSet);\n } else {\n value = stringify._rfc6868Unescape(value);\n value = stringify.paramPropertyValue(value);\n }\n\n line += ';' + paramName.toUpperCase() + '=' + value;\n }\n\n if (property.length === 3) {\n // If there are no values, we must assume a blank value\n return line + ':';\n }\n\n let valueType = property[2];\n\n let propDetails;\n let multiValue = false;\n let structuredValue = false;\n let isDefault = false;\n\n if (jsName in designSet.property) {\n propDetails = designSet.property[jsName];\n\n if ('multiValue' in propDetails) {\n multiValue = propDetails.multiValue;\n }\n\n if (('structuredValue' in propDetails) && Array.isArray(property[3])) {\n structuredValue = propDetails.structuredValue;\n }\n\n if ('defaultType' in propDetails) {\n if (valueType === propDetails.defaultType) {\n isDefault = true;\n }\n } else {\n if (valueType === DEFAULT_VALUE_TYPE) {\n isDefault = true;\n }\n }\n } else {\n if (valueType === DEFAULT_VALUE_TYPE) {\n isDefault = true;\n }\n }\n\n // push the VALUE property if type is not the default\n // for the current property.\n if (!isDefault) {\n // value will never contain ;/:/, so we don't escape it here.\n line += ';VALUE=' + valueType.toUpperCase();\n }\n\n line += ':';\n\n if (multiValue && structuredValue) {\n line += stringify.multiValue(\n property[3], structuredValue, valueType, multiValue, designSet, structuredValue\n );\n } else if (multiValue) {\n line += stringify.multiValue(\n property.slice(3), multiValue, valueType, null, designSet, false\n );\n } else if (structuredValue) {\n line += stringify.multiValue(\n property[3], structuredValue, valueType, null, designSet, structuredValue\n );\n } else {\n line += stringify.value(property[3], valueType, designSet, false);\n }\n\n return noFold ? line : foldline(line);\n};\n\n/**\n * Handles escaping of property values that may contain:\n *\n * COLON (:), SEMICOLON (;), or COMMA (,)\n *\n * If any of the above are present the result is wrapped\n * in double quotes.\n *\n * @function ICAL.stringify.paramPropertyValue\n * @param {String} value Raw property value\n * @param {boolean} force If value should be escaped even when unnecessary\n * @return {String} Given or escaped value when needed\n */\nstringify.paramPropertyValue = function(value, force) {\n if (!force &&\n (value.indexOf(',') === -1) &&\n (value.indexOf(':') === -1) &&\n (value.indexOf(';') === -1)) {\n\n return value;\n }\n\n return '\"' + value + '\"';\n};\n\n/**\n * Converts an array of ical values into a single\n * string based on a type and a delimiter value (like \",\").\n *\n * @function ICAL.stringify.multiValue\n * @param {Array} values List of values to convert\n * @param {String} delim Used to join the values (\",\", \";\", \":\")\n * @param {String} type Lowecase ical value type\n * (like boolean, date-time, etc..)\n * @param {?String} innerMulti If set, each value will again be processed\n * Used for structured values\n * @param {designSet} designSet\n * The design data to use for this property\n *\n * @return {String} iCalendar/vCard string for value\n */\nstringify.multiValue = function(values, delim, type, innerMulti, designSet, structuredValue) {\n let result = '';\n let len = values.length;\n let i = 0;\n\n for (; i < len; i++) {\n if (innerMulti && Array.isArray(values[i])) {\n result += stringify.multiValue(values[i], innerMulti, type, null, designSet, structuredValue);\n } else {\n result += stringify.value(values[i], type, designSet, structuredValue);\n }\n\n if (i !== (len - 1)) {\n result += delim;\n }\n }\n\n return result;\n};\n\n/**\n * Processes a single ical value runs the associated \"toICAL\" method from the\n * design value type if available to convert the value.\n *\n * @function ICAL.stringify.value\n * @param {String|Number} value A formatted value\n * @param {String} type Lowercase iCalendar/vCard value type\n * (like boolean, date-time, etc..)\n * @return {String} iCalendar/vCard value for single value\n */\nstringify.value = function(value, type, designSet, structuredValue) {\n if (type in designSet.value && 'toICAL' in designSet.value[type]) {\n return designSet.value[type].toICAL(value, structuredValue);\n }\n return value;\n};\n\n/**\n * Internal helper for rfc6868. Exposing this on ICAL.stringify so that\n * hackers can disable the rfc6868 parsing if the really need to.\n *\n * @param {String} val The value to unescape\n * @return {String} The escaped value\n */\nstringify._rfc6868Unescape = function(val) {\n return val.replace(/[\\n^\"]/g, function(x) {\n return RFC6868_REPLACE_MAP[x];\n });\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\nconst NAME_INDEX$1 = 0;\nconst PROP_INDEX = 1;\nconst TYPE_INDEX = 2;\nconst VALUE_INDEX = 3;\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").Geo} Geo\n * Imports the 'Geo' type from the \"types.js\" module\n */\n\n/**\n * Provides a layer on top of the raw jCal object for manipulating a single property, with its\n * parameters and value.\n *\n * @memberof ICAL\n */\nclass Property {\n /**\n * Create an {@link ICAL.Property} by parsing the passed iCalendar string.\n *\n * @param {String} str The iCalendar string to parse\n * @param {designSet=} designSet The design data to use for this property\n * @return {Property} The created iCalendar property\n */\n static fromString(str, designSet) {\n return new Property(parse.property(str, designSet));\n }\n\n /**\n * Creates a new ICAL.Property instance.\n *\n * It is important to note that mutations done in the wrapper directly mutate the jCal object used\n * to initialize.\n *\n * Can also be used to create new properties by passing the name of the property (as a String).\n *\n * @param {Array|String} jCal Raw jCal representation OR the new name of the property\n * @param {Component=} parent Parent component\n */\n constructor(jCal, parent) {\n this._parent = parent || null;\n\n if (typeof(jCal) === 'string') {\n // We are creating the property by name and need to detect the type\n this.jCal = [jCal, {}, design.defaultType];\n this.jCal[TYPE_INDEX] = this.getDefaultType();\n } else {\n this.jCal = jCal;\n }\n this._updateType();\n }\n\n /**\n * The value type for this property\n * @type {String}\n */\n get type() {\n return this.jCal[TYPE_INDEX];\n }\n\n /**\n * The name of this property, in lowercase.\n * @type {String}\n */\n get name() {\n return this.jCal[NAME_INDEX$1];\n }\n\n /**\n * The parent component for this property.\n * @type {Component}\n */\n get parent() {\n return this._parent;\n }\n\n set parent(p) {\n // Before setting the parent, check if the design set has changed. If it\n // has, we later need to update the type if it was unknown before.\n let designSetChanged = !this._parent || (p && p._designSet != this._parent._designSet);\n\n this._parent = p;\n\n if (this.type == design.defaultType && designSetChanged) {\n this.jCal[TYPE_INDEX] = this.getDefaultType();\n this._updateType();\n }\n }\n\n /**\n * The design set for this property, e.g. icalendar vs vcard\n *\n * @type {designSet}\n * @private\n */\n get _designSet() {\n return this.parent ? this.parent._designSet : design.defaultSet;\n }\n\n /**\n * Updates the type metadata from the current jCal type and design set.\n *\n * @private\n */\n _updateType() {\n let designSet = this._designSet;\n\n if (this.type in designSet.value) {\n if ('decorate' in designSet.value[this.type]) {\n this.isDecorated = true;\n } else {\n this.isDecorated = false;\n }\n\n if (this.name in designSet.property) {\n this.isMultiValue = ('multiValue' in designSet.property[this.name]);\n this.isStructuredValue = ('structuredValue' in designSet.property[this.name]);\n }\n }\n }\n\n /**\n * Hydrate a single value. The act of hydrating means turning the raw jCal\n * value into a potentially wrapped object, for example {@link ICAL.Time}.\n *\n * @private\n * @param {Number} index The index of the value to hydrate\n * @return {?Object} The decorated value.\n */\n _hydrateValue(index) {\n if (this._values && this._values[index]) {\n return this._values[index];\n }\n\n // for the case where there is no value.\n if (this.jCal.length <= (VALUE_INDEX + index)) {\n return null;\n }\n\n if (this.isDecorated) {\n if (!this._values) {\n this._values = [];\n }\n return (this._values[index] = this._decorate(\n this.jCal[VALUE_INDEX + index]\n ));\n } else {\n return this.jCal[VALUE_INDEX + index];\n }\n }\n\n /**\n * Decorate a single value, returning its wrapped object. This is used by\n * the hydrate function to actually wrap the value.\n *\n * @private\n * @param {?} value The value to decorate\n * @return {Object} The decorated value\n */\n _decorate(value) {\n return this._designSet.value[this.type].decorate(value, this);\n }\n\n /**\n * Undecorate a single value, returning its raw jCal data.\n *\n * @private\n * @param {Object} value The value to undecorate\n * @return {?} The undecorated value\n */\n _undecorate(value) {\n return this._designSet.value[this.type].undecorate(value, this);\n }\n\n /**\n * Sets the value at the given index while also hydrating it. The passed\n * value can either be a decorated or undecorated value.\n *\n * @private\n * @param {?} value The value to set\n * @param {Number} index The index to set it at\n */\n _setDecoratedValue(value, index) {\n if (!this._values) {\n this._values = [];\n }\n\n if (typeof(value) === 'object' && 'icaltype' in value) {\n // decorated value\n this.jCal[VALUE_INDEX + index] = this._undecorate(value);\n this._values[index] = value;\n } else {\n // undecorated value\n this.jCal[VALUE_INDEX + index] = value;\n this._values[index] = this._decorate(value);\n }\n }\n\n /**\n * Gets a parameter on the property.\n *\n * @param {String} name Parameter name (lowercase)\n * @return {Array|String} Parameter value\n */\n getParameter(name) {\n if (name in this.jCal[PROP_INDEX]) {\n return this.jCal[PROP_INDEX][name];\n } else {\n return undefined;\n }\n }\n\n /**\n * Gets first parameter on the property.\n *\n * @param {String} name Parameter name (lowercase)\n * @return {String} Parameter value\n */\n getFirstParameter(name) {\n let parameters = this.getParameter(name);\n\n if (Array.isArray(parameters)) {\n return parameters[0];\n }\n\n return parameters;\n }\n\n /**\n * Sets a parameter on the property.\n *\n * @param {String} name The parameter name\n * @param {Array|String} value The parameter value\n */\n setParameter(name, value) {\n let lcname = name.toLowerCase();\n if (typeof value === \"string\" &&\n lcname in this._designSet.param &&\n 'multiValue' in this._designSet.param[lcname]) {\n value = [value];\n }\n this.jCal[PROP_INDEX][name] = value;\n }\n\n /**\n * Removes a parameter\n *\n * @param {String} name The parameter name\n */\n removeParameter(name) {\n delete this.jCal[PROP_INDEX][name];\n }\n\n /**\n * Get the default type based on this property's name.\n *\n * @return {String} The default type for this property\n */\n getDefaultType() {\n let name = this.jCal[NAME_INDEX$1];\n let designSet = this._designSet;\n\n if (name in designSet.property) {\n let details = designSet.property[name];\n if ('defaultType' in details) {\n return details.defaultType;\n }\n }\n return design.defaultType;\n }\n\n /**\n * Sets type of property and clears out any existing values of the current\n * type.\n *\n * @param {String} type New iCAL type (see design.*.values)\n */\n resetType(type) {\n this.removeAllValues();\n this.jCal[TYPE_INDEX] = type;\n this._updateType();\n }\n\n /**\n * Finds the first property value.\n *\n * @return {Binary | Duration | Period |\n * Recur | Time | UtcOffset | Geo | string | null} First property value\n */\n getFirstValue() {\n return this._hydrateValue(0);\n }\n\n /**\n * Gets all values on the property.\n *\n * NOTE: this creates an array during each call.\n *\n * @return {Array} List of values\n */\n getValues() {\n let len = this.jCal.length - VALUE_INDEX;\n\n if (len < 1) {\n // it is possible for a property to have no value.\n return [];\n }\n\n let i = 0;\n let result = [];\n\n for (; i < len; i++) {\n result[i] = this._hydrateValue(i);\n }\n\n return result;\n }\n\n /**\n * Removes all values from this property\n */\n removeAllValues() {\n if (this._values) {\n this._values.length = 0;\n }\n this.jCal.length = 3;\n }\n\n /**\n * Sets the values of the property. Will overwrite the existing values.\n * This can only be used for multi-value properties.\n *\n * @param {Array} values An array of values\n */\n setValues(values) {\n if (!this.isMultiValue) {\n throw new Error(\n this.name + ': does not not support mulitValue.\\n' +\n 'override isMultiValue'\n );\n }\n\n let len = values.length;\n let i = 0;\n this.removeAllValues();\n\n if (len > 0 &&\n typeof(values[0]) === 'object' &&\n 'icaltype' in values[0]) {\n this.resetType(values[0].icaltype);\n }\n\n if (this.isDecorated) {\n for (; i < len; i++) {\n this._setDecoratedValue(values[i], i);\n }\n } else {\n for (; i < len; i++) {\n this.jCal[VALUE_INDEX + i] = values[i];\n }\n }\n }\n\n /**\n * Sets the current value of the property. If this is a multi-value\n * property, all other values will be removed.\n *\n * @param {String|Object} value New property value.\n */\n setValue(value) {\n this.removeAllValues();\n if (typeof(value) === 'object' && 'icaltype' in value) {\n this.resetType(value.icaltype);\n }\n\n if (this.isDecorated) {\n this._setDecoratedValue(value, 0);\n } else {\n this.jCal[VALUE_INDEX] = value;\n }\n }\n\n /**\n * Returns the Object representation of this component. The returned object\n * is a live jCal object and should be cloned if modified.\n * @return {Object}\n */\n toJSON() {\n return this.jCal;\n }\n\n /**\n * The string representation of this component.\n * @return {String}\n */\n toICALString() {\n return stringify.property(\n this.jCal, this._designSet, true\n );\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").Geo} Geo\n * Imports the 'Geo' type from the \"types.js\" module\n */\n\nconst NAME_INDEX = 0;\nconst PROPERTY_INDEX = 1;\nconst COMPONENT_INDEX = 2;\n\nconst PROPERTY_NAME_INDEX = 0;\nconst PROPERTY_VALUE_INDEX = 3;\n\n/**\n * Wraps a jCal component, adding convenience methods to add, remove and update subcomponents and\n * properties.\n *\n * @memberof ICAL\n */\nclass Component {\n /**\n * Create an {@link ICAL.Component} by parsing the passed iCalendar string.\n *\n * @param {String} str The iCalendar string to parse\n */\n static fromString(str) {\n return new Component(parse.component(str));\n }\n\n /**\n * Creates a new Component instance.\n *\n * @param {Array|String} jCal Raw jCal component data OR name of new\n * component\n * @param {Component=} parent Parent component to associate\n */\n constructor(jCal, parent) {\n if (typeof(jCal) === 'string') {\n // jCal spec (name, properties, components)\n jCal = [jCal, [], []];\n }\n\n // mostly for legacy reasons.\n this.jCal = jCal;\n\n this.parent = parent || null;\n\n if (!this.parent && this.name === 'vcalendar') {\n this._timezoneCache = new Map();\n }\n }\n\n /**\n * Hydrated properties are inserted into the _properties array at the same\n * position as in the jCal array, so it is possible that the array contains\n * undefined values for unhydrdated properties. To avoid iterating the\n * array when checking if all properties have been hydrated, we save the\n * count here.\n *\n * @type {Number}\n * @private\n */\n _hydratedPropertyCount = 0;\n\n /**\n * The same count as for _hydratedPropertyCount, but for subcomponents\n *\n * @type {Number}\n * @private\n */\n _hydratedComponentCount = 0;\n\n /**\n * A cache of hydrated time zone objects which may be used by consumers, keyed\n * by time zone ID.\n *\n * @type {Map}\n * @private\n */\n _timezoneCache = null;\n\n /**\n * @private\n */\n _components = null;\n\n /**\n * @private\n */\n _properties = null;\n\n /**\n * The name of this component\n *\n * @type {String}\n */\n get name() {\n return this.jCal[NAME_INDEX];\n }\n\n /**\n * The design set for this component, e.g. icalendar vs vcard\n *\n * @type {designSet}\n * @private\n */\n get _designSet() {\n let parentDesign = this.parent && this.parent._designSet;\n if (!parentDesign && this.name == \"vcard\") {\n // We can't decide on vcard3 vs vcard4 just based on the component name, the version number is\n // in the version property. We also can't use hydrated properties here because it would lead\n // to recursion, but the spec says that the version property needs to be the very first one.\n let versionProp = this.jCal[PROPERTY_INDEX]?.[0];\n\n if (versionProp && versionProp[PROPERTY_NAME_INDEX] == \"version\" && versionProp[PROPERTY_VALUE_INDEX] == \"3.0\") {\n return design.getDesignSet(\"vcard3\");\n }\n }\n\n return parentDesign || design.getDesignSet(this.name);\n }\n\n /**\n * @private\n */\n _hydrateComponent(index) {\n if (!this._components) {\n this._components = [];\n this._hydratedComponentCount = 0;\n }\n\n if (this._components[index]) {\n return this._components[index];\n }\n\n let comp = new Component(\n this.jCal[COMPONENT_INDEX][index],\n this\n );\n\n this._hydratedComponentCount++;\n return (this._components[index] = comp);\n }\n\n /**\n * @private\n */\n _hydrateProperty(index) {\n if (!this._properties) {\n this._properties = [];\n this._hydratedPropertyCount = 0;\n }\n\n if (this._properties[index]) {\n return this._properties[index];\n }\n\n let prop = new Property(\n this.jCal[PROPERTY_INDEX][index],\n this\n );\n\n this._hydratedPropertyCount++;\n return (this._properties[index] = prop);\n }\n\n /**\n * Finds first sub component, optionally filtered by name.\n *\n * @param {String=} name Optional name to filter by\n * @return {?Component} The found subcomponent\n */\n getFirstSubcomponent(name) {\n if (name) {\n let i = 0;\n let comps = this.jCal[COMPONENT_INDEX];\n let len = comps.length;\n\n for (; i < len; i++) {\n if (comps[i][NAME_INDEX] === name) {\n let result = this._hydrateComponent(i);\n return result;\n }\n }\n } else {\n if (this.jCal[COMPONENT_INDEX].length) {\n return this._hydrateComponent(0);\n }\n }\n\n // ensure we return a value (strict mode)\n return null;\n }\n\n /**\n * Finds all sub components, optionally filtering by name.\n *\n * @param {String=} name Optional name to filter by\n * @return {Component[]} The found sub components\n */\n getAllSubcomponents(name) {\n let jCalLen = this.jCal[COMPONENT_INDEX].length;\n let i = 0;\n\n if (name) {\n let comps = this.jCal[COMPONENT_INDEX];\n let result = [];\n\n for (; i < jCalLen; i++) {\n if (name === comps[i][NAME_INDEX]) {\n result.push(\n this._hydrateComponent(i)\n );\n }\n }\n return result;\n } else {\n if (!this._components ||\n (this._hydratedComponentCount !== jCalLen)) {\n for (; i < jCalLen; i++) {\n this._hydrateComponent(i);\n }\n }\n\n return this._components || [];\n }\n }\n\n /**\n * Returns true when a named property exists.\n *\n * @param {String} name The property name\n * @return {Boolean} True, when property is found\n */\n hasProperty(name) {\n let props = this.jCal[PROPERTY_INDEX];\n let len = props.length;\n\n let i = 0;\n for (; i < len; i++) {\n // 0 is property name\n if (props[i][NAME_INDEX] === name) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Finds the first property, optionally with the given name.\n *\n * @param {String=} name Lowercase property name\n * @return {?Property} The found property\n */\n getFirstProperty(name) {\n if (name) {\n let i = 0;\n let props = this.jCal[PROPERTY_INDEX];\n let len = props.length;\n\n for (; i < len; i++) {\n if (props[i][NAME_INDEX] === name) {\n let result = this._hydrateProperty(i);\n return result;\n }\n }\n } else {\n if (this.jCal[PROPERTY_INDEX].length) {\n return this._hydrateProperty(0);\n }\n }\n\n return null;\n }\n\n /**\n * Returns first property's value, if available.\n *\n * @param {String=} name Lowercase property name\n * @return {Binary | Duration | Period |\n * Recur | Time | UtcOffset | Geo | string | null} The found property value.\n */\n getFirstPropertyValue(name) {\n let prop = this.getFirstProperty(name);\n if (prop) {\n return prop.getFirstValue();\n }\n\n return null;\n }\n\n /**\n * Get all properties in the component, optionally filtered by name.\n *\n * @param {String=} name Lowercase property name\n * @return {Property[]} List of properties\n */\n getAllProperties(name) {\n let jCalLen = this.jCal[PROPERTY_INDEX].length;\n let i = 0;\n\n if (name) {\n let props = this.jCal[PROPERTY_INDEX];\n let result = [];\n\n for (; i < jCalLen; i++) {\n if (name === props[i][NAME_INDEX]) {\n result.push(\n this._hydrateProperty(i)\n );\n }\n }\n return result;\n } else {\n if (!this._properties ||\n (this._hydratedPropertyCount !== jCalLen)) {\n for (; i < jCalLen; i++) {\n this._hydrateProperty(i);\n }\n }\n\n return this._properties || [];\n }\n }\n\n /**\n * @private\n */\n _removeObjectByIndex(jCalIndex, cache, index) {\n cache = cache || [];\n // remove cached version\n if (cache[index]) {\n let obj = cache[index];\n if (\"parent\" in obj) {\n obj.parent = null;\n }\n }\n\n cache.splice(index, 1);\n\n // remove it from the jCal\n this.jCal[jCalIndex].splice(index, 1);\n }\n\n /**\n * @private\n */\n _removeObject(jCalIndex, cache, nameOrObject) {\n let i = 0;\n let objects = this.jCal[jCalIndex];\n let len = objects.length;\n let cached = this[cache];\n\n if (typeof(nameOrObject) === 'string') {\n for (; i < len; i++) {\n if (objects[i][NAME_INDEX] === nameOrObject) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n return true;\n }\n }\n } else if (cached) {\n for (; i < len; i++) {\n if (cached[i] && cached[i] === nameOrObject) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * @private\n */\n _removeAllObjects(jCalIndex, cache, name) {\n let cached = this[cache];\n\n // Unfortunately we have to run through all children to reset their\n // parent property.\n let objects = this.jCal[jCalIndex];\n let i = objects.length - 1;\n\n // descending search required because splice\n // is used and will effect the indices.\n for (; i >= 0; i--) {\n if (!name || objects[i][NAME_INDEX] === name) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n }\n }\n }\n\n /**\n * Adds a single sub component.\n *\n * @param {Component} component The component to add\n * @return {Component} The passed in component\n */\n addSubcomponent(component) {\n if (!this._components) {\n this._components = [];\n this._hydratedComponentCount = 0;\n }\n\n if (component.parent) {\n component.parent.removeSubcomponent(component);\n }\n\n let idx = this.jCal[COMPONENT_INDEX].push(component.jCal);\n this._components[idx - 1] = component;\n this._hydratedComponentCount++;\n component.parent = this;\n return component;\n }\n\n /**\n * Removes a single component by name or the instance of a specific\n * component.\n *\n * @param {Component|String} nameOrComp Name of component, or component\n * @return {Boolean} True when comp is removed\n */\n removeSubcomponent(nameOrComp) {\n let removed = this._removeObject(COMPONENT_INDEX, '_components', nameOrComp);\n if (removed) {\n this._hydratedComponentCount--;\n }\n return removed;\n }\n\n /**\n * Removes all components or (if given) all components by a particular\n * name.\n *\n * @param {String=} name Lowercase component name\n */\n removeAllSubcomponents(name) {\n let removed = this._removeAllObjects(COMPONENT_INDEX, '_components', name);\n this._hydratedComponentCount = 0;\n return removed;\n }\n\n /**\n * Adds an {@link ICAL.Property} to the component.\n *\n * @param {Property} property The property to add\n * @return {Property} The passed in property\n */\n addProperty(property) {\n if (!(property instanceof Property)) {\n throw new TypeError('must be instance of ICAL.Property');\n }\n\n if (!this._properties) {\n this._properties = [];\n this._hydratedPropertyCount = 0;\n }\n\n if (property.parent) {\n property.parent.removeProperty(property);\n }\n\n let idx = this.jCal[PROPERTY_INDEX].push(property.jCal);\n this._properties[idx - 1] = property;\n this._hydratedPropertyCount++;\n property.parent = this;\n return property;\n }\n\n /**\n * Helper method to add a property with a value to the component.\n *\n * @param {String} name Property name to add\n * @param {String|Number|Object} value Property value\n * @return {Property} The created property\n */\n addPropertyWithValue(name, value) {\n let prop = new Property(name);\n prop.setValue(value);\n\n this.addProperty(prop);\n\n return prop;\n }\n\n /**\n * Helper method that will update or create a property of the given name\n * and sets its value. If multiple properties with the given name exist,\n * only the first is updated.\n *\n * @param {String} name Property name to update\n * @param {String|Number|Object} value Property value\n * @return {Property} The created property\n */\n updatePropertyWithValue(name, value) {\n let prop = this.getFirstProperty(name);\n\n if (prop) {\n prop.setValue(value);\n } else {\n prop = this.addPropertyWithValue(name, value);\n }\n\n return prop;\n }\n\n /**\n * Removes a single property by name or the instance of the specific\n * property.\n *\n * @param {String|Property} nameOrProp Property name or instance to remove\n * @return {Boolean} True, when deleted\n */\n removeProperty(nameOrProp) {\n let removed = this._removeObject(PROPERTY_INDEX, '_properties', nameOrProp);\n if (removed) {\n this._hydratedPropertyCount--;\n }\n return removed;\n }\n\n /**\n * Removes all properties associated with this component, optionally\n * filtered by name.\n *\n * @param {String=} name Lowercase property name\n * @return {Boolean} True, when deleted\n */\n removeAllProperties(name) {\n let removed = this._removeAllObjects(PROPERTY_INDEX, '_properties', name);\n this._hydratedPropertyCount = 0;\n return removed;\n }\n\n /**\n * Returns the Object representation of this component. The returned object\n * is a live jCal object and should be cloned if modified.\n * @return {Object}\n */\n toJSON() {\n return this.jCal;\n }\n\n /**\n * The string representation of this component.\n * @return {String}\n */\n toString() {\n return stringify.component(\n this.jCal, this._designSet\n );\n }\n\n /**\n * Retrieve a time zone definition from the component tree, if any is present.\n * If the tree contains no time zone definitions or the TZID cannot be\n * matched, returns null.\n *\n * @param {String} tzid The ID of the time zone to retrieve\n * @return {Timezone} The time zone corresponding to the ID, or null\n */\n getTimeZoneByID(tzid) {\n // VTIMEZONE components can only appear as a child of the VCALENDAR\n // component; walk the tree if we're not the root.\n if (this.parent) {\n return this.parent.getTimeZoneByID(tzid);\n }\n\n // If there is no time zone cache, we are probably parsing an incomplete\n // file and will have no time zone definitions.\n if (!this._timezoneCache) {\n return null;\n }\n\n if (this._timezoneCache.has(tzid)) {\n return this._timezoneCache.get(tzid);\n }\n\n // If the time zone is not already cached, hydrate it from the\n // subcomponents.\n const zones = this.getAllSubcomponents('vtimezone');\n for (const zone of zones) {\n if (zone.getFirstProperty('tzid').getFirstValue() === tzid) {\n const hydratedZone = new Timezone({\n component: zone,\n tzid: tzid,\n });\n\n this._timezoneCache.set(tzid, hydratedZone);\n\n return hydratedZone;\n }\n }\n\n // Per the standard, we should always have a time zone defined in a file\n // for any referenced TZID, but don't blow up if the file is invalid.\n return null;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Primary class for expanding recurring rules. Can take multiple rrules, rdates, exdate(s) and\n * iterate (in order) over each next occurrence.\n *\n * Once initialized this class can also be serialized saved and continue iteration from the last\n * point.\n *\n * NOTE: it is intended that this class is to be used with {@link ICAL.Event} which handles recurrence\n * exceptions.\n *\n * @example\n * // assuming event is a parsed ical component\n * var event;\n *\n * var expand = new ICAL.RecurExpansion({\n * component: event,\n * dtstart: event.getFirstPropertyValue('dtstart')\n * });\n *\n * // remember there are infinite rules so it is a good idea to limit the scope of the iterations\n * // then resume later on.\n *\n * // next is always an ICAL.Time or null\n * var next;\n *\n * while (someCondition && (next = expand.next())) {\n * // do something with next\n * }\n *\n * // save instance for later\n * var json = JSON.stringify(expand);\n *\n * //...\n *\n * // NOTE: if the component's properties have changed you will need to rebuild the class and start\n * // over. This only works when the component's recurrence info is the same.\n * var expand = new ICAL.RecurExpansion(JSON.parse(json));\n *\n * @memberof ICAL\n */\nclass RecurExpansion {\n /**\n * Creates a new ICAL.RecurExpansion instance.\n *\n * The options object can be filled with the specified initial values. It can also contain\n * additional members, as a result of serializing a previous expansion state, as shown in the\n * example.\n *\n * @param {Object} options\n * Recurrence expansion options\n * @param {Time} options.dtstart\n * Start time of the event\n * @param {Component=} options.component\n * Component for expansion, required if not resuming.\n */\n constructor(options) {\n this.ruleDates = [];\n this.exDates = [];\n this.fromData(options);\n }\n\n /**\n * True when iteration is fully completed.\n * @type {Boolean}\n */\n complete = false;\n\n /**\n * Array of rrule iterators.\n *\n * @type {RecurIterator[]}\n * @private\n */\n ruleIterators = null;\n\n /**\n * Array of rdate instances.\n *\n * @type {Time[]}\n * @private\n */\n ruleDates = null;\n\n /**\n * Array of exdate instances.\n *\n * @type {Time[]}\n * @private\n */\n exDates = null;\n\n /**\n * Current position in ruleDates array.\n * @type {Number}\n * @private\n */\n ruleDateInc = 0;\n\n /**\n * Current position in exDates array\n * @type {Number}\n * @private\n */\n exDateInc = 0;\n\n /**\n * Current negative date.\n *\n * @type {Time}\n * @private\n */\n exDate = null;\n\n /**\n * Current additional date.\n *\n * @type {Time}\n * @private\n */\n ruleDate = null;\n\n /**\n * Start date of recurring rules.\n *\n * @type {Time}\n */\n dtstart = null;\n\n /**\n * Last expanded time\n *\n * @type {Time}\n */\n last = null;\n\n /**\n * Initialize the recurrence expansion from the data object. The options\n * object may also contain additional members, see the\n * {@link ICAL.RecurExpansion constructor} for more details.\n *\n * @param {Object} options\n * Recurrence expansion options\n * @param {Time} options.dtstart\n * Start time of the event\n * @param {Component=} options.component\n * Component for expansion, required if not resuming.\n */\n fromData(options) {\n let start = formatClassType(options.dtstart, Time);\n\n if (!start) {\n throw new Error('.dtstart (ICAL.Time) must be given');\n } else {\n this.dtstart = start;\n }\n\n if (options.component) {\n this._init(options.component);\n } else {\n this.last = formatClassType(options.last, Time) || start.clone();\n\n if (!options.ruleIterators) {\n throw new Error('.ruleIterators or .component must be given');\n }\n\n this.ruleIterators = options.ruleIterators.map(function(item) {\n return formatClassType(item, RecurIterator);\n });\n\n this.ruleDateInc = options.ruleDateInc;\n this.exDateInc = options.exDateInc;\n\n if (options.ruleDates) {\n this.ruleDates = options.ruleDates.map(item => formatClassType(item, Time));\n this.ruleDate = this.ruleDates[this.ruleDateInc];\n }\n\n if (options.exDates) {\n this.exDates = options.exDates.map(item => formatClassType(item, Time));\n this.exDate = this.exDates[this.exDateInc];\n }\n\n if (typeof(options.complete) !== 'undefined') {\n this.complete = options.complete;\n }\n }\n }\n\n /**\n * Compare two ICAL.Time objects. When the second parameter is a DATE and the first parameter is\n * DATE-TIME, strip the time and compare only the days.\n *\n * @private\n * @param {Time} a The one object to compare\n * @param {Time} b The other object to compare\n */\n _compare_special(a, b) {\n if (!a.isDate && b.isDate)\n return new Time({ year: a.year, month: a.month, day: a.day }).compare(b);\n return a.compare(b);\n }\n\n /**\n * Retrieve the next occurrence in the series.\n * @return {Time}\n */\n next() {\n let iter;\n let next;\n let compare;\n\n let maxTries = 500;\n let currentTry = 0;\n\n while (true) {\n if (currentTry++ > maxTries) {\n throw new Error(\n 'max tries have occurred, rule may be impossible to fulfill.'\n );\n }\n\n next = this.ruleDate;\n iter = this._nextRecurrenceIter(this.last);\n\n // no more matches\n // because we increment the rule day or rule\n // _after_ we choose a value this should be\n // the only spot where we need to worry about the\n // end of events.\n if (!next && !iter) {\n // there are no more iterators or rdates\n this.complete = true;\n break;\n }\n\n // no next rule day or recurrence rule is first.\n if (!next || (iter && next.compare(iter.last) > 0)) {\n // must be cloned, recur will reuse the time element.\n next = iter.last.clone();\n // move to next so we can continue\n iter.next();\n }\n\n // if the ruleDate is still next increment it.\n if (this.ruleDate === next) {\n this._nextRuleDay();\n }\n\n this.last = next;\n\n // check the negative rules\n if (this.exDate) {\n // EXDATE can be in DATE format, but DTSTART is in DATE-TIME format\n compare = this._compare_special(this.last, this.exDate);\n\n if (compare > 0) {\n this._nextExDay();\n }\n\n // if the current rule is excluded skip it.\n if (compare === 0) {\n this._nextExDay();\n continue;\n }\n }\n\n //XXX: The spec states that after we resolve the final\n // list of dates we execute exdate this seems somewhat counter\n // intuitive to what I have seen most servers do so for now\n // I exclude based on the original date not the one that may\n // have been modified by the exception.\n return this.last;\n }\n }\n\n /**\n * Converts object into a serialize-able format. This format can be passed\n * back into the expansion to resume iteration.\n * @return {Object}\n */\n toJSON() {\n function toJSON(item) {\n return item.toJSON();\n }\n\n let result = Object.create(null);\n result.ruleIterators = this.ruleIterators.map(toJSON);\n\n if (this.ruleDates) {\n result.ruleDates = this.ruleDates.map(toJSON);\n }\n\n if (this.exDates) {\n result.exDates = this.exDates.map(toJSON);\n }\n\n result.ruleDateInc = this.ruleDateInc;\n result.exDateInc = this.exDateInc;\n result.last = this.last.toJSON();\n result.dtstart = this.dtstart.toJSON();\n result.complete = this.complete;\n\n return result;\n }\n\n /**\n * Extract all dates from the properties in the given component. The\n * properties will be filtered by the property name.\n *\n * @private\n * @param {Component} component The component to search in\n * @param {String} propertyName The property name to search for\n * @return {Time[]} The extracted dates.\n */\n _extractDates(component, propertyName) {\n let result = [];\n let props = component.getAllProperties(propertyName);\n\n for (let i = 0, len = props.length; i < len; i++) {\n for (let prop of props[i].getValues()) {\n let idx = binsearchInsert(\n result,\n prop,\n (a, b) => a.compare(b)\n );\n\n // ordered insert\n result.splice(idx, 0, prop);\n }\n }\n\n return result;\n }\n\n /**\n * Initialize the recurrence expansion.\n *\n * @private\n * @param {Component} component The component to initialize from.\n */\n _init(component) {\n this.ruleIterators = [];\n\n this.last = this.dtstart.clone();\n\n // to provide api consistency non-recurring\n // events can also use the iterator though it will\n // only return a single time.\n if (!component.hasProperty('rdate') &&\n !component.hasProperty('rrule') &&\n !component.hasProperty('recurrence-id')) {\n this.ruleDate = this.last.clone();\n this.complete = true;\n return;\n }\n\n if (component.hasProperty('rdate')) {\n this.ruleDates = this._extractDates(component, 'rdate');\n\n // special hack for cases where first rdate is prior\n // to the start date. We only check for the first rdate.\n // This is mostly for google's crazy recurring date logic\n // (contacts birthdays).\n if ((this.ruleDates[0]) &&\n (this.ruleDates[0].compare(this.dtstart) < 0)) {\n\n this.ruleDateInc = 0;\n this.last = this.ruleDates[0].clone();\n } else {\n this.ruleDateInc = binsearchInsert(\n this.ruleDates,\n this.last,\n (a, b) => a.compare(b)\n );\n }\n\n this.ruleDate = this.ruleDates[this.ruleDateInc];\n }\n\n if (component.hasProperty('rrule')) {\n let rules = component.getAllProperties('rrule');\n let i = 0;\n let len = rules.length;\n\n let rule;\n let iter;\n\n for (; i < len; i++) {\n rule = rules[i].getFirstValue();\n iter = rule.iterator(this.dtstart);\n this.ruleIterators.push(iter);\n\n // increment to the next occurrence so future\n // calls to next return times beyond the initial iteration.\n // XXX: I find this suspicious might be a bug?\n iter.next();\n }\n }\n\n if (component.hasProperty('exdate')) {\n this.exDates = this._extractDates(component, 'exdate');\n // if we have a .last day we increment the index to beyond it.\n // When DTSTART is in DATE-TIME format, EXDATE is in DATE format and EXDATE is\n // the date of DTSTART, _compare_special finds this out and compareTime fails.\n this.exDateInc = binsearchInsert(\n this.exDates,\n this.last,\n this._compare_special\n );\n\n this.exDate = this.exDates[this.exDateInc];\n }\n }\n\n /**\n * Advance to the next exdate\n * @private\n */\n _nextExDay() {\n this.exDate = this.exDates[++this.exDateInc];\n }\n\n /**\n * Advance to the next rule date\n * @private\n */\n _nextRuleDay() {\n this.ruleDate = this.ruleDates[++this.ruleDateInc];\n }\n\n /**\n * Find and return the recurrence rule with the most recent event and\n * return it.\n *\n * @private\n * @return {?RecurIterator} Found iterator.\n */\n _nextRecurrenceIter() {\n let iters = this.ruleIterators;\n\n if (iters.length === 0) {\n return null;\n }\n\n let len = iters.length;\n let iter;\n let iterTime;\n let iterIdx = 0;\n let chosenIter;\n\n // loop through each iterator\n for (; iterIdx < len; iterIdx++) {\n iter = iters[iterIdx];\n iterTime = iter.last;\n\n // if iteration is complete\n // then we must exclude it from\n // the search and remove it.\n if (iter.completed) {\n len--;\n if (iterIdx !== 0) {\n iterIdx--;\n }\n iters.splice(iterIdx, 1);\n continue;\n }\n\n // find the most recent possible choice\n if (!chosenIter || chosenIter.last.compare(iterTime) > 0) {\n // that iterator is saved\n chosenIter = iter;\n }\n }\n\n // the chosen iterator is returned but not mutated\n // this iterator contains the most recent event.\n return chosenIter;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").frequencyValues} frequencyValues\n * Imports the 'frequencyValues' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").occurrenceDetails} occurrenceDetails\n * Imports the 'occurrenceDetails' type from the \"types.js\" module\n */\n\n/**\n * ICAL.js is organized into multiple layers. The bottom layer is a raw jCal\n * object, followed by the component/property layer. The highest level is the\n * event representation, which this class is part of. See the\n * {@tutorial layers} guide for more details.\n *\n * @memberof ICAL\n */\nclass Event {\n /**\n * Creates a new ICAL.Event instance.\n *\n * @param {Component=} component The ICAL.Component to base this event on\n * @param {Object} [options] Options for this event\n * @param {Boolean=} options.strictExceptions When true, will verify exceptions are related by\n * their UUID\n * @param {Array=} options.exceptions\n * Exceptions to this event, either as components or events. If not\n * specified exceptions will automatically be set in relation of\n * component's parent\n */\n constructor(component, options) {\n if (!(component instanceof Component)) {\n options = component;\n component = null;\n }\n\n if (component) {\n this.component = component;\n } else {\n this.component = new Component('vevent');\n }\n\n this._rangeExceptionCache = Object.create(null);\n this.exceptions = Object.create(null);\n this.rangeExceptions = [];\n\n if (options && options.strictExceptions) {\n this.strictExceptions = options.strictExceptions;\n }\n\n if (options && options.exceptions) {\n options.exceptions.forEach(this.relateException, this);\n } else if (this.component.parent && !this.isRecurrenceException()) {\n this.component.parent.getAllSubcomponents('vevent').forEach(function(event) {\n if (event.hasProperty('recurrence-id')) {\n this.relateException(event);\n }\n }, this);\n }\n }\n\n\n static THISANDFUTURE = 'THISANDFUTURE';\n\n /**\n * List of related event exceptions.\n *\n * @type {Event[]}\n */\n exceptions = null;\n\n /**\n * When true, will verify exceptions are related by their UUID.\n *\n * @type {Boolean}\n */\n strictExceptions = false;\n\n /**\n * Relates a given event exception to this object. If the given component\n * does not share the UID of this event it cannot be related and will throw\n * an exception.\n *\n * If this component is an exception it cannot have other exceptions\n * related to it.\n *\n * @param {Component|Event} obj Component or event\n */\n relateException(obj) {\n if (this.isRecurrenceException()) {\n throw new Error('cannot relate exception to exceptions');\n }\n\n if (obj instanceof Component) {\n obj = new Event(obj);\n }\n\n if (this.strictExceptions && obj.uid !== this.uid) {\n throw new Error('attempted to relate unrelated exception');\n }\n\n let id = obj.recurrenceId.toString();\n\n // we don't sort or manage exceptions directly\n // here the recurrence expander handles that.\n this.exceptions[id] = obj;\n\n // index RANGE=THISANDFUTURE exceptions so we can\n // look them up later in getOccurrenceDetails.\n if (obj.modifiesFuture()) {\n let item = [\n obj.recurrenceId.toUnixTime(), id\n ];\n\n // we keep them sorted so we can find the nearest\n // value later on...\n let idx = binsearchInsert(\n this.rangeExceptions,\n item,\n compareRangeException\n );\n\n this.rangeExceptions.splice(idx, 0, item);\n }\n }\n\n /**\n * Checks if this record is an exception and has the RANGE=THISANDFUTURE\n * value.\n *\n * @return {Boolean} True, when exception is within range\n */\n modifiesFuture() {\n if (!this.component.hasProperty('recurrence-id')) {\n return false;\n }\n\n let range = this.component.getFirstProperty('recurrence-id').getParameter('range');\n return range === Event.THISANDFUTURE;\n }\n\n /**\n * Finds the range exception nearest to the given date.\n *\n * @param {Time} time usually an occurrence time of an event\n * @return {?Event} the related event/exception or null\n */\n findRangeException(time) {\n if (!this.rangeExceptions.length) {\n return null;\n }\n\n let utc = time.toUnixTime();\n let idx = binsearchInsert(\n this.rangeExceptions,\n [utc],\n compareRangeException\n );\n\n idx -= 1;\n\n // occurs before\n if (idx < 0) {\n return null;\n }\n\n let rangeItem = this.rangeExceptions[idx];\n\n /* c8 ignore next 4 */\n if (utc < rangeItem[0]) {\n // sanity check only\n return null;\n }\n\n return rangeItem[1];\n }\n\n /**\n * Returns the occurrence details based on its start time. If the\n * occurrence has an exception will return the details for that exception.\n *\n * NOTE: this method is intend to be used in conjunction\n * with the {@link ICAL.Event#iterator iterator} method.\n *\n * @param {Time} occurrence time occurrence\n * @return {occurrenceDetails} Information about the occurrence\n */\n getOccurrenceDetails(occurrence) {\n let id = occurrence.toString();\n let utcId = occurrence.convertToZone(Timezone.utcTimezone).toString();\n let item;\n let result = {\n //XXX: Clone?\n recurrenceId: occurrence\n };\n\n if (id in this.exceptions) {\n item = result.item = this.exceptions[id];\n result.startDate = item.startDate;\n result.endDate = item.endDate;\n result.item = item;\n } else if (utcId in this.exceptions) {\n item = this.exceptions[utcId];\n result.startDate = item.startDate;\n result.endDate = item.endDate;\n result.item = item;\n } else {\n // range exceptions (RANGE=THISANDFUTURE) have a\n // lower priority then direct exceptions but\n // must be accounted for first. Their item is\n // always the first exception with the range prop.\n let rangeExceptionId = this.findRangeException(\n occurrence\n );\n let end;\n\n if (rangeExceptionId) {\n let exception = this.exceptions[rangeExceptionId];\n\n // range exception must modify standard time\n // by the difference (if any) in start/end times.\n result.item = exception;\n\n let startDiff = this._rangeExceptionCache[rangeExceptionId];\n\n if (!startDiff) {\n let original = exception.recurrenceId.clone();\n let newStart = exception.startDate.clone();\n\n // zones must be same otherwise subtract may be incorrect.\n original.zone = newStart.zone;\n startDiff = newStart.subtractDate(original);\n\n this._rangeExceptionCache[rangeExceptionId] = startDiff;\n }\n\n let start = occurrence.clone();\n start.zone = exception.startDate.zone;\n start.addDuration(startDiff);\n\n end = start.clone();\n end.addDuration(exception.duration);\n\n result.startDate = start;\n result.endDate = end;\n } else {\n // no range exception standard expansion\n end = occurrence.clone();\n end.addDuration(this.duration);\n\n result.endDate = end;\n result.startDate = occurrence;\n result.item = this;\n }\n }\n\n return result;\n }\n\n /**\n * Builds a recur expansion instance for a specific point in time (defaults\n * to startDate).\n *\n * @param {Time=} startTime Starting point for expansion\n * @return {RecurExpansion} Expansion object\n */\n iterator(startTime) {\n return new RecurExpansion({\n component: this.component,\n dtstart: startTime || this.startDate\n });\n }\n\n /**\n * Checks if the event is recurring\n *\n * @return {Boolean} True, if event is recurring\n */\n isRecurring() {\n let comp = this.component;\n return comp.hasProperty('rrule') || comp.hasProperty('rdate');\n }\n\n /**\n * Checks if the event describes a recurrence exception. See\n * {@tutorial terminology} for details.\n *\n * @return {Boolean} True, if the event describes a recurrence exception\n */\n isRecurrenceException() {\n return this.component.hasProperty('recurrence-id');\n }\n\n /**\n * Returns the types of recurrences this event may have.\n *\n * Returned as an object with the following possible keys:\n *\n * - YEARLY\n * - MONTHLY\n * - WEEKLY\n * - DAILY\n * - MINUTELY\n * - SECONDLY\n *\n * @return {Object.}\n * Object of recurrence flags\n */\n getRecurrenceTypes() {\n let rules = this.component.getAllProperties('rrule');\n let i = 0;\n let len = rules.length;\n let result = Object.create(null);\n\n for (; i < len; i++) {\n let value = rules[i].getFirstValue();\n result[value.freq] = true;\n }\n\n return result;\n }\n\n /**\n * The uid of this event\n * @type {String}\n */\n get uid() {\n return this._firstProp('uid');\n }\n\n set uid(value) {\n this._setProp('uid', value);\n }\n\n /**\n * The start date\n * @type {Time}\n */\n get startDate() {\n return this._firstProp('dtstart');\n }\n\n set startDate(value) {\n this._setTime('dtstart', value);\n }\n\n /**\n * The end date. This can be the result directly from the property, or the\n * end date calculated from start date and duration. Setting the property\n * will remove any duration properties.\n * @type {Time}\n */\n get endDate() {\n let endDate = this._firstProp('dtend');\n if (!endDate) {\n let duration = this._firstProp('duration');\n endDate = this.startDate.clone();\n if (duration) {\n endDate.addDuration(duration);\n } else if (endDate.isDate) {\n endDate.day += 1;\n }\n }\n return endDate;\n }\n\n set endDate(value) {\n if (this.component.hasProperty('duration')) {\n this.component.removeProperty('duration');\n }\n this._setTime('dtend', value);\n }\n\n /**\n * The duration. This can be the result directly from the property, or the\n * duration calculated from start date and end date. Setting the property\n * will remove any `dtend` properties.\n * @type {Duration}\n */\n get duration() {\n let duration = this._firstProp('duration');\n if (!duration) {\n return this.endDate.subtractDateTz(this.startDate);\n }\n return duration;\n }\n\n set duration(value) {\n if (this.component.hasProperty('dtend')) {\n this.component.removeProperty('dtend');\n }\n\n this._setProp('duration', value);\n }\n\n /**\n * The location of the event.\n * @type {String}\n */\n get location() {\n return this._firstProp('location');\n }\n\n set location(value) {\n this._setProp('location', value);\n }\n\n /**\n * The attendees in the event\n * @type {Property[]}\n */\n get attendees() {\n //XXX: This is way lame we should have a better\n // data structure for this later.\n return this.component.getAllProperties('attendee');\n }\n\n /**\n * The event summary\n * @type {String}\n */\n get summary() {\n return this._firstProp('summary');\n }\n\n set summary(value) {\n this._setProp('summary', value);\n }\n\n /**\n * The event description.\n * @type {String}\n */\n get description() {\n return this._firstProp('description');\n }\n\n set description(value) {\n this._setProp('description', value);\n }\n\n /**\n * The event color from [rfc7986](https://datatracker.ietf.org/doc/html/rfc7986)\n * @type {String}\n */\n get color() {\n return this._firstProp('color');\n }\n\n set color(value) {\n this._setProp('color', value);\n }\n\n /**\n * The organizer value as an uri. In most cases this is a mailto: uri, but\n * it can also be something else, like urn:uuid:...\n * @type {String}\n */\n get organizer() {\n return this._firstProp('organizer');\n }\n\n set organizer(value) {\n this._setProp('organizer', value);\n }\n\n /**\n * The sequence value for this event. Used for scheduling\n * see {@tutorial terminology}.\n * @type {Number}\n */\n get sequence() {\n return this._firstProp('sequence');\n }\n\n set sequence(value) {\n this._setProp('sequence', value);\n }\n\n /**\n * The recurrence id for this event. See {@tutorial terminology} for details.\n * @type {Time}\n */\n get recurrenceId() {\n return this._firstProp('recurrence-id');\n }\n\n set recurrenceId(value) {\n this._setTime('recurrence-id', value);\n }\n\n /**\n * Set/update a time property's value.\n * This will also update the TZID of the property.\n *\n * TODO: this method handles the case where we are switching\n * from a known timezone to an implied timezone (one without TZID).\n * This does _not_ handle the case of moving between a known\n * (by TimezoneService) timezone to an unknown timezone...\n *\n * We will not add/remove/update the VTIMEZONE subcomponents\n * leading to invalid ICAL data...\n * @private\n * @param {String} propName The property name\n * @param {Time} time The time to set\n */\n _setTime(propName, time) {\n let prop = this.component.getFirstProperty(propName);\n\n if (!prop) {\n prop = new Property(propName);\n this.component.addProperty(prop);\n }\n\n // utc and local don't get a tzid\n if (\n time.zone === Timezone.localTimezone ||\n time.zone === Timezone.utcTimezone\n ) {\n // remove the tzid\n prop.removeParameter('tzid');\n } else {\n prop.setParameter('tzid', time.zone.tzid);\n }\n\n prop.setValue(time);\n }\n\n _setProp(name, value) {\n this.component.updatePropertyWithValue(name, value);\n }\n\n _firstProp(name) {\n return this.component.getFirstPropertyValue(name);\n }\n\n /**\n * The string representation of this event.\n * @return {String}\n */\n toString() {\n return this.component.toString();\n }\n}\n\nfunction compareRangeException(a, b) {\n if (a[0] > b[0]) return 1;\n if (b[0] > a[0]) return -1;\n return 0;\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * The ComponentParser is used to process a String or jCal Object,\n * firing callbacks for various found components, as well as completion.\n *\n * @example\n * var options = {\n * // when false no events will be emitted for type\n * parseEvent: true,\n * parseTimezone: true\n * };\n *\n * var parser = new ICAL.ComponentParser(options);\n *\n * parser.onevent(eventComponent) {\n * //...\n * }\n *\n * // ontimezone, etc...\n *\n * parser.oncomplete = function() {\n *\n * };\n *\n * parser.process(stringOrComponent);\n *\n * @memberof ICAL\n */\nclass ComponentParser {\n /**\n * Creates a new ICAL.ComponentParser instance.\n *\n * @param {Object=} options Component parser options\n * @param {Boolean} options.parseEvent Whether events should be parsed\n * @param {Boolean} options.parseTimezeone Whether timezones should be parsed\n */\n constructor(options) {\n if (typeof(options) === 'undefined') {\n options = {};\n }\n\n for (let [key, value] of Object.entries(options)) {\n this[key] = value;\n }\n }\n\n /**\n * When true, parse events\n *\n * @type {Boolean}\n */\n parseEvent = true;\n\n /**\n * When true, parse timezones\n *\n * @type {Boolean}\n */\n parseTimezone = true;\n\n\n /* SAX like events here for reference */\n\n /**\n * Fired when parsing is complete\n * @callback\n */\n oncomplete = /* c8 ignore next */ function() {};\n\n /**\n * Fired if an error occurs during parsing.\n *\n * @callback\n * @param {Error} err details of error\n */\n onerror = /* c8 ignore next */ function(err) {};\n\n /**\n * Fired when a top level component (VTIMEZONE) is found\n *\n * @callback\n * @param {Timezone} component Timezone object\n */\n ontimezone = /* c8 ignore next */ function(component) {};\n\n /**\n * Fired when a top level component (VEVENT) is found.\n *\n * @callback\n * @param {Event} component Top level component\n */\n onevent = /* c8 ignore next */ function(component) {};\n\n /**\n * Process a string or parse ical object. This function itself will return\n * nothing but will start the parsing process.\n *\n * Events must be registered prior to calling this method.\n *\n * @param {Component|String|Object} ical The component to process,\n * either in its final form, as a jCal Object, or string representation\n */\n process(ical) {\n //TODO: this is sync now in the future we will have a incremental parser.\n if (typeof(ical) === 'string') {\n ical = parse(ical);\n }\n\n if (!(ical instanceof Component)) {\n ical = new Component(ical);\n }\n\n let components = ical.getAllSubcomponents();\n let i = 0;\n let len = components.length;\n let component;\n\n for (; i < len; i++) {\n component = components[i];\n\n switch (component.name) {\n case 'vtimezone':\n if (this.parseTimezone) {\n let tzid = component.getFirstPropertyValue('tzid');\n if (tzid) {\n this.ontimezone(new Timezone({\n tzid: tzid,\n component: component\n }));\n }\n }\n break;\n case 'vevent':\n if (this.parseEvent) {\n this.onevent(new Event(component));\n }\n break;\n default:\n continue;\n }\n }\n\n //XXX: ideally we should do a \"nextTick\" here\n // so in all cases this is actually async.\n this.oncomplete();\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * The main ICAL module. Provides access to everything else.\n *\n * @alias ICAL\n * @namespace ICAL\n * @property {ICAL.design} design\n * @property {ICAL.helpers} helpers\n */\nvar ICALmodule = {\n /**\n * The number of characters before iCalendar line folding should occur\n * @type {Number}\n * @default 75\n */\n foldLength: 75,\n\n debug: false,\n\n /**\n * The character(s) to be used for a newline. The default value is provided by\n * rfc5545.\n * @type {String}\n * @default \"\\r\\n\"\n */\n newLineChar: '\\r\\n',\n\n Binary,\n Component,\n ComponentParser,\n Duration,\n Event,\n Period,\n Property,\n Recur,\n RecurExpansion,\n RecurIterator,\n Time,\n Timezone,\n TimezoneService,\n UtcOffset,\n VCardTime,\n\n parse,\n stringify,\n\n design,\n helpers\n};\n\nexport { ICALmodule as default };\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import './assets/index-Ctj4Wyhb.css';\nimport NcDateTimePickerNative from \"@nextcloud/vue/dist/Components/NcDateTimePickerNative.js\";\nimport NcButton from \"@nextcloud/vue/dist/Components/NcButton.js\";\nimport IconDelete from \"vue-material-design-icons/TrashCanOutline.vue\";\nimport IconAdd from \"vue-material-design-icons/Plus.vue\";\nimport { getFirstDay } from \"@nextcloud/l10n\";\nimport { getZoneString } from \"icalzone\";\nimport ICAL from \"ical.js\";\nimport { v4 } from \"uuid\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nfunction normalizeComponent(scriptExports, render2, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n if (render2) {\n options.render = render2;\n options.staticRenderFns = staticRenderFns;\n options._compiled = true;\n }\n {\n options._scopeId = \"data-v-\" + scopeId;\n }\n return {\n exports: scriptExports,\n options\n };\n}\nconst _sfc_main = {\n name: \"CalendarAvailability\",\n components: {\n NcDateTimePickerNative,\n NcButton,\n IconAdd,\n IconDelete\n },\n props: {\n slots: {\n type: Object,\n required: true\n },\n loading: {\n type: Boolean,\n default: false\n },\n l10nTo: {\n type: String,\n required: true\n },\n l10nDeleteSlot: {\n type: String,\n required: true\n },\n l10nEmptyDay: {\n type: String,\n required: true\n },\n l10nAddSlot: {\n type: String,\n required: true\n },\n l10nWeekDayListLabel: {\n type: String,\n default: \"Weekdays\"\n },\n l10nMonday: {\n type: String,\n required: true\n },\n l10nTuesday: {\n type: String,\n required: true\n },\n l10nWednesday: {\n type: String,\n required: true\n },\n l10nThursday: {\n type: String,\n required: true\n },\n l10nFriday: {\n type: String,\n required: true\n },\n l10nSaturday: {\n type: String,\n required: true\n },\n l10nSunday: {\n type: String,\n required: true\n },\n l10nStartPickerLabel: {\n type: Function,\n default: (dayName) => `Pick a start time for ${dayName}`\n },\n l10nEndPickerLabel: {\n type: Function,\n default: (dayName) => `Pick a end time for ${dayName}`\n }\n },\n data() {\n return {\n internalSlots: this.slotsToInternalData(this.slots)\n };\n },\n watch: {\n slots() {\n this.internalSlots = this.slotsToInternalData(this.slots);\n }\n },\n methods: {\n timeStampSlotsToDateObjectSlots(slots) {\n return slots.map((slot) => ({\n start: new Date(slot.start * 1e3),\n end: new Date(slot.end * 1e3)\n }));\n },\n slotsToInternalData() {\n const moToSa = [\n {\n id: \"MO\",\n displayName: this.l10nMonday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.MO)\n },\n {\n id: \"TU\",\n displayName: this.l10nTuesday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.TU)\n },\n {\n id: \"WE\",\n displayName: this.l10nWednesday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.WE)\n },\n {\n id: \"TH\",\n displayName: this.l10nThursday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.TH)\n },\n {\n id: \"FR\",\n displayName: this.l10nFriday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.FR)\n },\n {\n id: \"SA\",\n displayName: this.l10nSaturday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.SA)\n }\n ];\n const sunday = {\n id: \"SU\",\n displayName: this.l10nSunday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.SU)\n };\n return getFirstDay() === 1 ? [...moToSa, sunday] : [sunday, ...moToSa];\n },\n internalDataToSlots() {\n const converted = {};\n this.internalSlots.forEach(({ id, slots }) => {\n converted[id] = slots.map((slot) => ({\n start: Math.round(slot.start.getTime() / 1e3),\n end: Math.round(slot.end.getTime() / 1e3)\n }));\n });\n return converted;\n },\n addSlot(day) {\n const start = /* @__PURE__ */ new Date();\n start.setHours(9, 0, 0, 0);\n const end = /* @__PURE__ */ new Date();\n end.setHours(17, 0, 0, 0);\n day.slots.push({\n start,\n end\n });\n this.onChangeSlots();\n },\n removeSlot(day, idx) {\n day.slots.splice(idx, 1);\n this.onChangeSlots();\n },\n onChangeSlots() {\n this.$emit(\"update:slots\", this.internalDataToSlots());\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"ul\", { staticClass: \"week-day-container\", attrs: { \"aria-label\": _vm.l10nWeekDayListLabel } }, [_vm._l(_vm.internalSlots, function(day) {\n return [_c(\"li\", { key: `day-label-${day.id}`, staticClass: \"day-container\" }, [_c(\"div\", { staticClass: \"label-weekday\" }, [_c(\"span\", { attrs: { \"id\": day.displayName + \"-label\" } }, [_vm._v(_vm._s(day.displayName))])]), _c(\"div\", { key: `day-slots-${day.id}`, staticClass: \"availability-slots\" }, [_c(\"div\", { staticClass: \"availability-slot-group\" }, [_vm._l(day.slots, function(slot, idx) {\n return [_c(\"div\", { key: `slot-${day.id}-${idx}`, staticClass: \"availability-slot\" }, [_c(\"NcDateTimePickerNative\", { staticClass: \"start-date\", attrs: { \"id\": `start-${day.id}-${idx}`, \"type\": \"time\", \"label\": _vm.l10nStartPickerLabel?.(day.displayName), \"hide-label\": true }, on: { \"change\": _vm.onChangeSlots }, model: { value: slot.start, callback: function($$v) {\n _vm.$set(slot, \"start\", $$v);\n }, expression: \"slot.start\" } }), _c(\"span\", { staticClass: \"to-text\" }, [_vm._v(\" \" + _vm._s(_vm.l10nTo) + \" \")]), _c(\"NcDateTimePickerNative\", { staticClass: \"end-date\", attrs: { \"id\": `end-${day.id}-${idx}`, \"type\": \"time\", \"label\": _vm.l10nEndPickerLabel?.(day.displayName), \"hide-label\": true }, on: { \"change\": _vm.onChangeSlots }, model: { value: slot.end, callback: function($$v) {\n _vm.$set(slot, \"end\", $$v);\n }, expression: \"slot.end\" } }), _c(\"NcButton\", { key: `slot-${day.id}-${idx}-btn`, staticClass: \"button\", attrs: { \"type\": \"tertiary\", \"aria-label\": _vm.l10nDeleteSlot, \"title\": _vm.l10nDeleteSlot }, on: { \"click\": function($event) {\n return _vm.removeSlot(day, idx);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconDelete\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, true) })], 1)];\n })], 2), day.slots.length === 0 ? _c(\"span\", { staticClass: \"empty-content\" }, [_vm._v(\" \" + _vm._s(_vm.l10nEmptyDay) + \" \")]) : _vm._e()]), _c(\"NcButton\", { key: `add-slot-${day.id}`, staticClass: \"add-another button\", attrs: { \"disabled\": _vm.loading, \"title\": _vm.l10nAddSlot, \"aria-label\": _vm.l10nAddSlot }, on: { \"click\": function($event) {\n return _vm.addSlot(day);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconAdd\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, true) })], 1)];\n })], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"91e2d87d\"\n);\nconst CalendarAvailability = __component__.exports;\nconst logger = getLoggerBuilder().detectUser().setApp(\"@nextcloud/calendar-availability-vue\").build();\nfunction getEmptySlots() {\n return {\n MO: [],\n TU: [],\n WE: [],\n TH: [],\n FR: [],\n SA: [],\n SU: []\n };\n}\nfunction vavailabilityToSlots(vavailability) {\n const parsedIcal = ICAL.parse(vavailability);\n const vcalendarComp = new ICAL.Component(parsedIcal);\n const vavailabilityComp = vcalendarComp.getFirstSubcomponent(\"vavailability\");\n let timezoneId;\n const timezoneComp = vcalendarComp.getFirstSubcomponent(\"vtimezone\");\n if (timezoneComp) {\n timezoneId = timezoneComp.getFirstProperty(\"tzid\").getFirstValue();\n }\n const availableComps = vavailabilityComp.getAllSubcomponents(\"available\");\n const slots = getEmptySlots();\n availableComps.forEach((availableComp) => {\n const startIcalDate = availableComp.getFirstProperty(\"dtstart\").getFirstValue();\n const endIcalDate = availableComp.getFirstProperty(\"dtend\").getFirstValue();\n const rrule = availableComp.getFirstProperty(\"rrule\");\n const start = /* @__PURE__ */ new Date();\n start.setHours(startIcalDate.hour, startIcalDate.minute, 0, 0);\n const end = /* @__PURE__ */ new Date();\n end.setHours(endIcalDate.hour, endIcalDate.minute, 0, 0);\n if (rrule.getFirstValue().freq !== \"WEEKLY\") {\n logger.warn(\"rrule not supported\", {\n rrule: rrule.toICALString()\n });\n return;\n }\n rrule.getFirstValue().getComponent(\"BYDAY\").forEach((day) => {\n slots[day].push({\n start: start.getTime() / 1e3,\n end: end.getTime() / 1e3\n });\n });\n });\n return {\n slots,\n timezoneId\n };\n}\nfunction slotsToVavailability(slots, timezoneId) {\n const vcalendarComp = new ICAL.Component(\"vcalendar\");\n vcalendarComp.addPropertyWithValue(\"prodid\", \"Nextcloud DAV app\");\n const predefinedTimezoneIcal = getZoneString(timezoneId);\n if (predefinedTimezoneIcal) {\n const timezoneComp = new ICAL.Component(ICAL.parse(predefinedTimezoneIcal));\n vcalendarComp.addSubcomponent(timezoneComp);\n } else {\n const timezoneComp = new ICAL.Component(\"vtimezone\");\n timezoneComp.addPropertyWithValue(\"tzid\", timezoneId);\n vcalendarComp.addSubcomponent(timezoneComp);\n }\n const vavailabilityComp = new ICAL.Component(\"vavailability\");\n const deduplicated = slots.reduce((acc, slot) => {\n const start = new Date(slot.start * 1e3);\n const end = new Date(slot.end * 1e3);\n const key = [\n start.getHours(),\n start.getMinutes(),\n end.getHours(),\n end.getMinutes()\n ].join(\"-\");\n return {\n ...acc,\n [key]: [...acc[key] ?? [], slot]\n };\n }, {});\n Object.keys(deduplicated).map((key) => {\n const slots2 = deduplicated[key];\n const start = slots2[0].start;\n const end = slots2[0].end;\n const days = slots2.map((slot) => slot.day).filter((day, index, self) => self.indexOf(day) === index);\n const availableComp = new ICAL.Component(\"available\");\n const startTimeProp = availableComp.addPropertyWithValue(\"dtstart\", ICAL.Time.fromJSDate(new Date(start * 1e3), false));\n startTimeProp.setParameter(\"tzid\", timezoneId);\n const endTimeProp = availableComp.addPropertyWithValue(\"dtend\", ICAL.Time.fromJSDate(new Date(end * 1e3), false));\n endTimeProp.setParameter(\"tzid\", timezoneId);\n availableComp.addPropertyWithValue(\"uid\", v4());\n availableComp.addPropertyWithValue(\"rrule\", {\n freq: \"WEEKLY\",\n byday: days\n });\n return availableComp;\n }).map(vavailabilityComp.addSubcomponent.bind(vavailabilityComp));\n vcalendarComp.addSubcomponent(vavailabilityComp);\n return vcalendarComp.toString();\n}\nexport {\n CalendarAvailability,\n getEmptySlots,\n slotsToVavailability,\n vavailabilityToSlots\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createClient } from 'webdav'\nimport memoize from 'lodash/fp/memoize.js'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getCurrentUser, getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\n\nexport const getClient = memoize((service) => {\n\t// init webdav client\n\tconst remote = generateRemoteUrl(`dav/${service}/${getCurrentUser().uid}`)\n\tconst client = createClient(remote)\n\n\t// set CSRF token header\n\tconst setHeaders = (token) => {\n\t\tclient.setHeaders({\n\t\t\t// Add this so the server knows it is an request from the browser\n\t\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t\t// Inject user auth\n\t\t\trequesttoken: token ?? '',\n\t\t})\n\t}\n\n\t// refresh headers when request token changes\n\tonRequestTokenUpdate(setHeaders)\n\tsetHeaders(getRequestToken())\n\n\treturn client\n})\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvailabilityForm.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvailabilityForm.vue?vue&type=script&setup=true&lang=ts\"","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getClient } from '../dav/client.js'\nimport logger from './logger.js'\nimport { parseXML } from 'webdav'\n\nimport {\n\tslotsToVavailability,\n\tvavailabilityToSlots,\n} from '@nextcloud/calendar-availability-vue'\n\n/**\n *\n */\nexport function getEmptySlots() {\n\treturn {\n\t\tMO: [],\n\t\tTU: [],\n\t\tWE: [],\n\t\tTH: [],\n\t\tFR: [],\n\t\tSA: [],\n\t\tSU: [],\n\t}\n}\n\n/**\n *\n */\nexport async function findScheduleInboxAvailability() {\n\tconst client = getClient('calendars')\n\n\tconst response = await client.customRequest('inbox', {\n\t\tmethod: 'PROPFIND',\n\t\tdata: `\n\t\t\t\n\t\t\t \n\t\t\t\t\n\t\t\t \n\t\t\t`,\n\t})\n\n\tconst xml = await parseXML(await response.text())\n\n\tif (!xml) {\n\t\treturn undefined\n\t}\n\n\tconst availability = xml?.multistatus?.response[0]?.propstat?.prop['calendar-availability']\n\tif (!availability) {\n\t\treturn undefined\n\t}\n\n\treturn vavailabilityToSlots(availability)\n}\n\n/**\n * @param {any} slots -\n * @param {any} timezoneId -\n */\nexport async function saveScheduleInboxAvailability(slots, timezoneId) {\n\tconst all = [...Object.keys(slots).flatMap(dayId => slots[dayId].map(slot => ({\n\t\t...slot,\n\t\tday: dayId,\n\t})))]\n\n\tconst vavailability = slotsToVavailability(all, timezoneId)\n\n\tlogger.debug('New availability ical created', {\n\t\tvavailability,\n\t})\n\n\tconst client = getClient('calendars')\n\tawait client.customRequest('inbox', {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t \n\t\t\t\t\n\t\t\t\t ${vavailability}\n\t\t\t\t\n\t\t\t \n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Enable user status automation based on availability\n */\nexport async function enableUserStatusAutomation() {\n\treturn await axios.post(\n\t\tgenerateOcsUrl('/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\tappId: 'dav',\n\t\t\tconfigKey: 'user_status_automation',\n\t\t}),\n\t\t{\n\t\t\tconfigValue: 'yes',\n\t\t},\n\t)\n}\n\n/**\n * Disable user status automation based on availability\n */\nexport async function disableUserStatusAutomation() {\n\treturn await axios.delete(\n\t\tgenerateOcsUrl('/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\tappId: 'dav',\n\t\t\tconfigKey: 'user_status_automation',\n\t\t}),\n\t)\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvailabilityForm.vue?vue&type=style&index=0&id=e0a387ae&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvailabilityForm.vue?vue&type=style&index=0&id=e0a387ae&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AvailabilityForm.vue?vue&type=template&id=e0a387ae&scoped=true\"\nimport script from \"./AvailabilityForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AvailabilityForm.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AvailabilityForm.vue?vue&type=style&index=0&id=e0a387ae&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e0a387ae\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Availability.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Availability.vue?vue&type=script&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./Availability.vue?vue&type=template&id=3fd0c464\"\nimport script from \"./Availability.vue?vue&type=script&lang=js\"\nexport * from \"./Availability.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcSettingsSection',{attrs:{\"id\":\"availability\",\"name\":_vm.$t('dav', 'Availability'),\"description\":_vm.$t('dav', 'If you configure your working hours, other people will see when you are out of office when they book a meeting.')}},[_c('AvailabilityForm')],1),_vm._v(\" \"),(!_vm.hideAbsenceSettings)?_c('NcSettingsSection',{attrs:{\"id\":\"absence\",\"name\":_vm.$t('dav', 'Absence'),\"description\":_vm.$t('dav', 'Configure your next absence period.')}},[_c('AbsenceForm')],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue'\nimport { translate } from '@nextcloud/l10n'\nimport Availability from './views/Availability.vue'\n\nVue.prototype.$t = translate\n\nconst View = Vue.extend(Availability);\n\n(new View({})).$mount('#settings-personal-availability')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.availability-day[data-v-91e2d87d] {\n padding: 0 10px 0 10px;\n position: absolute;\n}\n.availability-slots[data-v-91e2d87d] {\n max-width: 332px;\n width: 100%;\n display: flex;\n justify-content: flex-start;\n white-space: nowrap;\n}\n.availability-slot[data-v-91e2d87d] {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.availability-slot-group[data-v-91e2d87d] {\n display: flex;\n flex-direction: column;\n}\n.time-zone[data-v-91e2d87d] {\n padding: 32px 12px 12px 0;\n}\n.week-day-container[data-v-91e2d87d] {\n box-sizing: border-box;\n margin-bottom: 32px;\n max-width: 500px;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n.button[data-v-91e2d87d] {\n align-self: flex-end;\n}\n.label-weekday[data-v-91e2d87d] {\n position: relative;\n display: flex;\n align-items: flex-start;\n min-width: 77px;\n width: 77px;\n}\n.label-weekday > span[data-v-91e2d87d] {\n height: 50px;\n display: flex;\n align-items: center;\n}\n.add-another[data-v-91e2d87d] {\n background-color: transparent;\n border: none;\n opacity: 0.5;\n display: inline-flex;\n padding: 0;\n margin: 0;\n margin-bottom: 3px;\n}\n.add-another[data-v-91e2d87d]:hover {\n opacity: 1;\n}\n.to-text[data-v-91e2d87d] {\n padding-right: 12px;\n}\n.time-zone-text[data-v-91e2d87d] {\n padding-left: 22px;\n}\n.empty-content[data-v-91e2d87d] {\n color: var(--color-text-lighter);\n display: inline-flex;\n align-items: center;\n}\n.start-date[data-v-91e2d87d] {\n padding-right: 12px;\n}\n.day-container[data-v-91e2d87d] {\n display: flex;\n max-width: 500px;\n width: 100%;\n gap: 24px;\n border-top: 1px solid var(--color-border);\n padding-top: calc(3 * var(--default-grid-baseline));\n margin-top: calc(2 * var(--default-grid-baseline));\n align-items: center;\n}\n.day-container > button[data-v-91e2d87d] {\n align-self: center;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/calendar-availability-vue/dist/assets/index-Ctj4Wyhb.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,sBAAsB;EACtB,kBAAkB;AACpB;AACA;EACE,gBAAgB;EAChB,WAAW;EACX,aAAa;EACb,2BAA2B;EAC3B,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,sBAAsB;AACxB;AACA;EACE,yBAAyB;AAC3B;AACA;EACE,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,WAAW;EACX,aAAa;EACb,sBAAsB;EACtB,uBAAuB;AACzB;AACA;EACE,oBAAoB;AACtB;AACA;EACE,kBAAkB;EAClB,aAAa;EACb,uBAAuB;EACvB,eAAe;EACf,WAAW;AACb;AACA;EACE,YAAY;EACZ,aAAa;EACb,mBAAmB;AACrB;AACA;EACE,6BAA6B;EAC7B,YAAY;EACZ,YAAY;EACZ,oBAAoB;EACpB,UAAU;EACV,SAAS;EACT,kBAAkB;AACpB;AACA;EACE,UAAU;AACZ;AACA;EACE,mBAAmB;AACrB;AACA;EACE,kBAAkB;AACpB;AACA;EACE,gCAAgC;EAChC,oBAAoB;EACpB,mBAAmB;AACrB;AACA;EACE,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,gBAAgB;EAChB,WAAW;EACX,SAAS;EACT,yCAAyC;EACzC,mDAAmD;EACnD,kDAAkD;EAClD,mBAAmB;AACrB;AACA;EACE,kBAAkB;AACpB\",\"sourcesContent\":[\".availability-day[data-v-91e2d87d] {\\n padding: 0 10px 0 10px;\\n position: absolute;\\n}\\n.availability-slots[data-v-91e2d87d] {\\n max-width: 332px;\\n width: 100%;\\n display: flex;\\n justify-content: flex-start;\\n white-space: nowrap;\\n}\\n.availability-slot[data-v-91e2d87d] {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n}\\n.availability-slot-group[data-v-91e2d87d] {\\n display: flex;\\n flex-direction: column;\\n}\\n.time-zone[data-v-91e2d87d] {\\n padding: 32px 12px 12px 0;\\n}\\n.week-day-container[data-v-91e2d87d] {\\n box-sizing: border-box;\\n margin-bottom: 32px;\\n max-width: 500px;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n}\\n.button[data-v-91e2d87d] {\\n align-self: flex-end;\\n}\\n.label-weekday[data-v-91e2d87d] {\\n position: relative;\\n display: flex;\\n align-items: flex-start;\\n min-width: 77px;\\n width: 77px;\\n}\\n.label-weekday > span[data-v-91e2d87d] {\\n height: 50px;\\n display: flex;\\n align-items: center;\\n}\\n.add-another[data-v-91e2d87d] {\\n background-color: transparent;\\n border: none;\\n opacity: 0.5;\\n display: inline-flex;\\n padding: 0;\\n margin: 0;\\n margin-bottom: 3px;\\n}\\n.add-another[data-v-91e2d87d]:hover {\\n opacity: 1;\\n}\\n.to-text[data-v-91e2d87d] {\\n padding-right: 12px;\\n}\\n.time-zone-text[data-v-91e2d87d] {\\n padding-left: 22px;\\n}\\n.empty-content[data-v-91e2d87d] {\\n color: var(--color-text-lighter);\\n display: inline-flex;\\n align-items: center;\\n}\\n.start-date[data-v-91e2d87d] {\\n padding-right: 12px;\\n}\\n.day-container[data-v-91e2d87d] {\\n display: flex;\\n max-width: 500px;\\n width: 100%;\\n gap: 24px;\\n border-top: 1px solid var(--color-border);\\n padding-top: calc(3 * var(--default-grid-baseline));\\n margin-top: calc(2 * var(--default-grid-baseline));\\n align-items: center;\\n}\\n.day-container > button[data-v-91e2d87d] {\\n align-self: center;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.absence[data-v-a9995350]{display:flex;flex-direction:column;gap:5px}.absence__dates[data-v-a9995350]{display:flex;gap:10px;width:100%}.absence__dates__picker[data-v-a9995350]{flex:1 auto}.absence__dates__picker[data-v-a9995350] .native-datetime-picker--input{margin-bottom:0}.absence__buttons[data-v-a9995350]{display:flex;gap:5px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dav/src/components/AbsenceForm.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,qBAAA,CACA,OAAA,CAEA,iCACC,YAAA,CACA,QAAA,CACA,UAAA,CAEA,yCACC,WAAA,CAEA,wEACC,eAAA,CAKH,mCACC,YAAA,CACA,OAAA\",\"sourcesContent\":[\"\\n.absence {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 5px;\\n\\n\\t&__dates {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 10px;\\n\\t\\twidth: 100%;\\n\\n\\t\\t&__picker {\\n\\t\\t\\tflex: 1 auto;\\n\\n\\t\\t\\t:deep(.native-datetime-picker--input) {\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 5px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `[data-v-e0a387ae] .availability-day{padding:0 10px 0 10px;position:absolute}[data-v-e0a387ae] .availability-slots{display:flex;white-space:normal}[data-v-e0a387ae] .availability-slot{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap}[data-v-e0a387ae] .availability-slot-group{display:flex;flex-direction:column}[data-v-e0a387ae] .mx-input-wrapper{width:85px}[data-v-e0a387ae] .mx-datepicker{width:97px}.time-zone[data-v-e0a387ae]{padding-block:32px 12px;padding-inline:0 12px;display:flex;flex-wrap:wrap}.time-zone__heading[data-v-e0a387ae]{margin-inline-end:calc(var(--default-grid-baseline)*2);line-height:var(--default-clickable-area);font-weight:bold}.grid-table[data-v-e0a387ae]{display:grid;margin-bottom:32px;grid-column-gap:24px;grid-row-gap:6px;grid-template-columns:min-content auto min-content;max-width:500px}.button[data-v-e0a387ae]{align-self:flex-end}[data-v-e0a387ae] .label-weekday{position:relative;display:inline-flex;padding-top:4px;align-self:center}[data-v-e0a387ae] .delete-slot{padding-bottom:unset}[data-v-e0a387ae] .add-another{align-self:center}.to-text[data-v-e0a387ae]{padding-inline-end:12px}.empty-content[data-v-e0a387ae]{align-self:center;color:var(--color-text-maxcontrast);margin-block-start:var(--default-grid-baseline)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dav/src/components/AvailabilityForm.vue\"],\"names\":[],\"mappings\":\"AACA,oCACC,qBAAA,CACA,iBAAA,CAGD,sCACC,YAAA,CACA,kBAAA,CAGD,qCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,cAAA,CAGD,2CACC,YAAA,CACA,qBAAA,CAGD,oCACC,UAAA,CAGD,iCACC,UAAA,CAGD,4BACC,uBAAA,CACA,qBAAA,CACA,YAAA,CACA,cAAA,CAEA,qCACC,sDAAA,CACA,yCAAA,CACA,gBAAA,CAIF,6BACC,YAAA,CACA,kBAAA,CACA,oBAAA,CACA,gBAAA,CACA,kDAAA,CACA,eAAA,CAGD,yBACC,mBAAA,CAGD,iCACC,iBAAA,CACA,mBAAA,CACA,eAAA,CACA,iBAAA,CAGD,+BACC,oBAAA,CAGD,+BACC,iBAAA,CAGD,0BACC,uBAAA,CAGD,gCACC,iBAAA,CACA,mCAAA,CACA,+CAAA\",\"sourcesContent\":[\"\\n:deep(.availability-day) {\\n\\tpadding: 0 10px 0 10px;\\n\\tposition: absolute;\\n}\\n\\n:deep(.availability-slots) {\\n\\tdisplay: flex;\\n\\twhite-space: normal;\\n}\\n\\n:deep(.availability-slot) {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n\\tflex-wrap: wrap;\\n}\\n\\n:deep(.availability-slot-group) {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n}\\n\\n:deep(.mx-input-wrapper) {\\n\\twidth: 85px;\\n}\\n\\n:deep(.mx-datepicker) {\\n\\twidth: 97px;\\n}\\n\\n.time-zone {\\n\\tpadding-block: 32px 12px;\\n\\tpadding-inline: 0 12px;\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\n\\t&__heading {\\n\\t\\tmargin-inline-end: calc(var(--default-grid-baseline) * 2);\\n\\t\\tline-height: var(--default-clickable-area);\\n\\t\\tfont-weight: bold;\\n\\t}\\n}\\n\\n.grid-table {\\n\\tdisplay: grid;\\n\\tmargin-bottom: 32px;\\n\\tgrid-column-gap: 24px;\\n\\tgrid-row-gap: 6px;\\n\\tgrid-template-columns: min-content auto min-content;\\n\\tmax-width: 500px;\\n}\\n\\n.button {\\n\\talign-self: flex-end;\\n}\\n\\n:deep(.label-weekday) {\\n\\tposition: relative;\\n\\tdisplay: inline-flex;\\n\\tpadding-top: 4px;\\n\\talign-self: center;\\n}\\n\\n:deep(.delete-slot) {\\n\\tpadding-bottom: unset;\\n}\\n\\n:deep(.add-another) {\\n\\talign-self: center;\\n}\\n\\n.to-text {\\n\\tpadding-inline-end: 12px;\\n}\\n\\n.empty-content {\\n\\talign-self: center;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tmargin-block-start: var(--default-grid-baseline);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getZoneString = exports.getZoneLines = void 0;\nconst zones_1 = require(\"./zones\"); // This module must be generated with `yarn run build-zones`.\nfunction renderZoneSub(data) {\n const { n, f, t, r, s } = data;\n return [\n `TZNAME:${n}`,\n `TZOFFSETFROM:${f}`,\n `TZOFFSETTO:${t || f}`,\n `DTSTART:${s || zones_1.defaultStart}`,\n ...(r ? [`RRULE:FREQ=${r.f || 'YEARLY'};BYMONTH=${r.m};BYDAY=${r.d}`] : []),\n ];\n}\n/**\n * Tries to resolve a given time zone to iCalendar time zone component\n * (`VTIMEZONE`) as string array (usually for further processing).\n * @param zoneName Time zone name (e.g. `America/Los_Angeles`)\n * @param includeWrapper Set to `false` to avoid including lines for\n * `BEGIN:VTIMEZONE` and `END:VTIMEZONE`.\n * @returns Lines of the iCalendar time zone component (`VTIMEZONE`), each line\n * individually as an array of strings.\n */\nfunction getZoneLines(zoneName, includeWrapper = true) {\n const zoneData = zones_1.zonesMap.get(zoneName);\n if (zoneData) {\n const { s, d } = zoneData;\n const lines = [\n ...(includeWrapper ? ['BEGIN:VTIMEZONE'] : []),\n `TZID:${zoneName}`,\n // `X-LIC-LOCATION:${zoneName}`, // Who uses this?\n 'BEGIN:STANDARD',\n ...renderZoneSub(s),\n 'END:STANDARD',\n ...(d ? [\n 'BEGIN:DAYLIGHT',\n ...renderZoneSub(d),\n 'END:DAYLIGHT',\n ] : []),\n ...(includeWrapper ? ['END:VTIMEZONE'] : []),\n ];\n return lines;\n }\n}\nexports.getZoneLines = getZoneLines;\n/**\n * Tries to resolve a given time zone to iCalendar time zone component\n * (`VTIMEZONE`) as string.\n * @param zoneName Time zone name (e.g. `America/Los_Angeles`)\n * @param includeWrapper Set to `false` to avoid including lines for\n * `BEGIN:VTIMEZONE` and `END:VTIMEZONE`.\n * @returns The iCalendar time zone component (`VTIMEZONE`) as string\n * with `\\r\\n` line breaks.\n */\nfunction getZoneString(zoneName, includeWrapper = true) {\n const lines = getZoneLines(zoneName, includeWrapper);\n return lines === null || lines === void 0 ? void 0 : lines.join('\\r\\n');\n}\nexports.getZoneString = getZoneString;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zonesMap = exports.defaultStart = void 0;\nexports.defaultStart = \"19700101T000000\";\nexports.zonesMap = new Map([\n [\n \"Africa/Abidjan\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Accra\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Addis_Ababa\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Algiers\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"CET\"\n }\n }\n ],\n [\n \"Africa/Asmara\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Bamako\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Bangui\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Banjul\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Bissau\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Blantyre\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Brazzaville\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Bujumbura\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Cairo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"EET\"\n }\n }\n ],\n [\n \"Africa/Casablanca\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"+01\"\n }\n }\n ],\n [\n \"Africa/Ceuta\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Africa/Conakry\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Dakar\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Dar_es_Salaam\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Djibouti\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Douala\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/El_Aaiun\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"+01\"\n }\n }\n ],\n [\n \"Africa/Freetown\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Gaborone\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Harare\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Johannesburg\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"SAST\"\n }\n }\n ],\n [\n \"Africa/Juba\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Kampala\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Khartoum\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Kigali\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Kinshasa\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Lagos\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Libreville\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Lome\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Luanda\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Lubumbashi\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Lusaka\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Malabo\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Maputo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Maseru\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"SAST\"\n }\n }\n ],\n [\n \"Africa/Mbabane\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"SAST\"\n }\n }\n ],\n [\n \"Africa/Mogadishu\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Monrovia\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Nairobi\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Ndjamena\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Niamey\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Nouakchott\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Ouagadougou\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Porto-Novo\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Sao_Tome\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Tripoli\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"EET\"\n }\n }\n ],\n [\n \"Africa/Tunis\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"CET\"\n }\n }\n ],\n [\n \"Africa/Windhoek\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"America/Adak\",\n {\n \"s\": {\n \"f\": \"-0900\",\n \"t\": \"-1000\",\n \"n\": \"HST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-1000\",\n \"t\": \"-0900\",\n \"n\": \"HDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Anchorage\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Anguilla\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Antigua\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Araguaina\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Buenos_Aires\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Catamarca\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Cordoba\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Jujuy\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/La_Rioja\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Mendoza\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Rio_Gallegos\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Salta\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/San_Juan\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/San_Luis\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Tucuman\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Ushuaia\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Aruba\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Asuncion\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700322T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"4SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701004T000000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Atikokan\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Bahia_Banderas\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Bahia\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Barbados\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Belem\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Belize\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Blanc-Sablon\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Boa_Vista\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Bogota\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Boise\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Cambridge_Bay\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Campo_Grande\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700215T000000\",\n \"r\": {\n \"m\": 2,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701101T000000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Cancun\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Caracas\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Cayenne\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Cayman\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Chicago\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Chihuahua\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Costa_Rica\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Creston\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Cuiaba\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700215T000000\",\n \"r\": {\n \"m\": 2,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701101T000000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Curacao\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Danmarkshavn\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"America/Dawson_Creek\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Dawson\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Denver\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Detroit\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Dominica\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Edmonton\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Eirunepe\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/El_Salvador\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Fort_Nelson\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Fortaleza\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Glace_Bay\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Godthab\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701024T230000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SA\"\n }\n },\n \"d\": {\n \"f\": \"-0300\",\n \"t\": \"-0200\",\n \"n\": \"-02\",\n \"s\": \"19700328T220000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SA\"\n }\n }\n }\n ],\n [\n \"America/Goose_Bay\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Grand_Turk\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Grenada\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Guadeloupe\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Guatemala\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Guayaquil\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Guyana\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Halifax\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Havana\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"CST\",\n \"s\": \"19701101T010000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"CDT\",\n \"s\": \"19700308T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Hermosillo\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Indiana/Indianapolis\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Knox\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Marengo\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Petersburg\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Tell_City\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Vevay\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Vincennes\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Winamac\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Inuvik\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Iqaluit\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Jamaica\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Juneau\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Kentucky/Louisville\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Kentucky/Monticello\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Kralendijk\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/La_Paz\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Lima\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Los_Angeles\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Lower_Princes\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Maceio\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Managua\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Manaus\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Marigot\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Martinique\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Matamoros\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Mazatlan\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Menominee\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Merida\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Metlakatla\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Mexico_City\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Miquelon\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0300\",\n \"t\": \"-0200\",\n \"n\": \"-02\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Moncton\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Monterrey\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Montevideo\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Montserrat\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Nassau\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/New_York\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Nipigon\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Nome\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Noronha\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"n\": \"-02\"\n }\n }\n ],\n [\n \"America/North_Dakota/Beulah\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/North_Dakota/Center\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/North_Dakota/New_Salem\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Ojinaga\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Panama\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Pangnirtung\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Paramaribo\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Phoenix\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Port_of_Spain\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Port-au-Prince\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Porto_Velho\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Puerto_Rico\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Punta_Arenas\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Rainy_River\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Rankin_Inlet\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Recife\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Regina\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Resolute\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Rio_Branco\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Santarem\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Santiago\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700405T000000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19700906T000000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Santo_Domingo\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Sao_Paulo\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19700215T000000\",\n \"r\": {\n \"m\": 2,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"-0300\",\n \"t\": \"-0200\",\n \"n\": \"-02\",\n \"s\": \"19701101T000000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Scoresbysund\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"t\": \"-0100\",\n \"n\": \"-01\",\n \"s\": \"19701025T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0100\",\n \"t\": \"+0000\",\n \"n\": \"+00\",\n \"s\": \"19700329T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"America/Sitka\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/St_Barthelemy\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Johns\",\n {\n \"s\": {\n \"f\": \"-0230\",\n \"t\": \"-0330\",\n \"n\": \"NST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0330\",\n \"t\": \"-0230\",\n \"n\": \"NDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/St_Kitts\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Lucia\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Thomas\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Vincent\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Swift_Current\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Tegucigalpa\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Thule\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Thunder_Bay\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Tijuana\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Toronto\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Tortola\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Vancouver\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Whitehorse\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Winnipeg\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Yakutat\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Yellowknife\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"Antarctica/Casey\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Antarctica/Davis\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Antarctica/DumontDUrville\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Antarctica/Macquarie\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Antarctica/Mawson\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Antarctica/McMurdo\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"t\": \"+1200\",\n \"n\": \"NZST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1200\",\n \"t\": \"+1300\",\n \"n\": \"NZDT\",\n \"s\": \"19700927T020000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Antarctica/Palmer\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Antarctica/Rothera\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Antarctica/Syowa\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Antarctica/Troll\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0000\",\n \"n\": \"+00\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0200\",\n \"n\": \"+02\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Antarctica/Vostok\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Arctic/Longyearbyen\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Aden\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Almaty\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Amman\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701030T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1FR\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700326T235959\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1TH\"\n }\n }\n }\n ],\n [\n \"Asia/Anadyr\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Asia/Aqtau\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Aqtobe\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Ashgabat\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Atyrau\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Baghdad\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Bahrain\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Baku\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Bangkok\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Barnaul\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Beirut\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T000000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Bishkek\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Brunei\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Chita\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Choibalsan\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Colombo\",\n {\n \"s\": {\n \"f\": \"+0530\",\n \"n\": \"+0530\"\n }\n }\n ],\n [\n \"Asia/Damascus\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701030T000000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1FR\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700327T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1FR\"\n }\n }\n }\n ],\n [\n \"Asia/Dhaka\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Dili\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Dubai\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Dushanbe\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Famagusta\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Gaza\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701031T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SA\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700328T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"4SA\"\n }\n }\n }\n ],\n [\n \"Asia/Hebron\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701031T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SA\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700328T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"4SA\"\n }\n }\n }\n ],\n [\n \"Asia/Ho_Chi_Minh\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Hong_Kong\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"HKT\"\n }\n }\n ],\n [\n \"Asia/Hovd\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Irkutsk\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Istanbul\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Jakarta\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"WIB\"\n }\n }\n ],\n [\n \"Asia/Jayapura\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"WIT\"\n }\n }\n ],\n [\n \"Asia/Jerusalem\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"IST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"IDT\",\n \"s\": \"19700327T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1FR\"\n }\n }\n }\n ],\n [\n \"Asia/Kabul\",\n {\n \"s\": {\n \"f\": \"+0430\",\n \"n\": \"+0430\"\n }\n }\n ],\n [\n \"Asia/Kamchatka\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Asia/Karachi\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"PKT\"\n }\n }\n ],\n [\n \"Asia/Kathmandu\",\n {\n \"s\": {\n \"f\": \"+0545\",\n \"n\": \"+0545\"\n }\n }\n ],\n [\n \"Asia/Khandyga\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Kolkata\",\n {\n \"s\": {\n \"f\": \"+0530\",\n \"n\": \"IST\"\n }\n }\n ],\n [\n \"Asia/Krasnoyarsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Kuala_Lumpur\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Kuching\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Kuwait\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Macau\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"Asia/Magadan\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Asia/Makassar\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"WITA\"\n }\n }\n ],\n [\n \"Asia/Manila\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"PST\"\n }\n }\n ],\n [\n \"Asia/Muscat\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Nicosia\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Novokuznetsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Novosibirsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Omsk\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Oral\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Phnom_Penh\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Pontianak\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"WIB\"\n }\n }\n ],\n [\n \"Asia/Pyongyang\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"KST\"\n }\n }\n ],\n [\n \"Asia/Qatar\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Qyzylorda\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Riyadh\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Sakhalin\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Asia/Samarkand\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Seoul\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"KST\"\n }\n }\n ],\n [\n \"Asia/Shanghai\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"Asia/Singapore\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Srednekolymsk\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Asia/Taipei\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"Asia/Tashkent\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Tbilisi\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Tehran\",\n {\n \"s\": {\n \"f\": \"+0430\",\n \"t\": \"+0330\",\n \"n\": \"+0330\",\n \"s\": \"19700921T000000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"+0330\",\n \"t\": \"+0430\",\n \"n\": \"+0430\",\n \"s\": \"19700321T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"3SU\"\n }\n }\n }\n ],\n [\n \"Asia/Thimphu\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Tokyo\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"JST\"\n }\n }\n ],\n [\n \"Asia/Tomsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Ulaanbaatar\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Urumqi\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Ust-Nera\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Asia/Vientiane\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Vladivostok\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Asia/Yakutsk\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Yangon\",\n {\n \"s\": {\n \"f\": \"+0630\",\n \"n\": \"+0630\"\n }\n }\n ],\n [\n \"Asia/Yekaterinburg\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Yerevan\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Atlantic/Azores\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"t\": \"-0100\",\n \"n\": \"-01\",\n \"s\": \"19701025T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0100\",\n \"t\": \"+0000\",\n \"n\": \"+00\",\n \"s\": \"19700329T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Bermuda\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Canary\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Cape_Verde\",\n {\n \"s\": {\n \"f\": \"-0100\",\n \"n\": \"-01\"\n }\n }\n ],\n [\n \"Atlantic/Faroe\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Madeira\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Reykjavik\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Atlantic/South_Georgia\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"n\": \"-02\"\n }\n }\n ],\n [\n \"Atlantic/St_Helena\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Atlantic/Stanley\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Australia/Adelaide\",\n {\n \"s\": {\n \"f\": \"+1030\",\n \"t\": \"+0930\",\n \"n\": \"ACST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0930\",\n \"t\": \"+1030\",\n \"n\": \"ACDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Brisbane\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"AEST\"\n }\n }\n ],\n [\n \"Australia/Broken_Hill\",\n {\n \"s\": {\n \"f\": \"+1030\",\n \"t\": \"+0930\",\n \"n\": \"ACST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0930\",\n \"t\": \"+1030\",\n \"n\": \"ACDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Currie\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Darwin\",\n {\n \"s\": {\n \"f\": \"+0930\",\n \"n\": \"ACST\"\n }\n }\n ],\n [\n \"Australia/Eucla\",\n {\n \"s\": {\n \"f\": \"+0845\",\n \"n\": \"+0845\"\n }\n }\n ],\n [\n \"Australia/Hobart\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Lindeman\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"AEST\"\n }\n }\n ],\n [\n \"Australia/Lord_Howe\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1030\",\n \"n\": \"+1030\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1030\",\n \"t\": \"+1100\",\n \"n\": \"+11\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Melbourne\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Perth\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"AWST\"\n }\n }\n ],\n [\n \"Australia/Sydney\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Etc/GMT-0\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/GMT-1\",\n {\n \"s\": {\n \"f\": \"-0100\",\n \"n\": \"-01\"\n }\n }\n ],\n [\n \"Etc/GMT-10\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"-10\"\n }\n }\n ],\n [\n \"Etc/GMT-11\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"-11\"\n }\n }\n ],\n [\n \"Etc/GMT-12\",\n {\n \"s\": {\n \"f\": \"-1200\",\n \"n\": \"-12\"\n }\n }\n ],\n [\n \"Etc/GMT-2\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"n\": \"-02\"\n }\n }\n ],\n [\n \"Etc/GMT-3\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Etc/GMT-4\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"Etc/GMT-5\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"Etc/GMT-6\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"-06\"\n }\n }\n ],\n [\n \"Etc/GMT-7\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"-07\"\n }\n }\n ],\n [\n \"Etc/GMT-8\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"n\": \"-08\"\n }\n }\n ],\n [\n \"Etc/GMT-9\",\n {\n \"s\": {\n \"f\": \"-0900\",\n \"n\": \"-09\"\n }\n }\n ],\n [\n \"Etc/GMT\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/GMT+0\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/GMT+1\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"+01\"\n }\n }\n ],\n [\n \"Etc/GMT+10\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Etc/GMT+11\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Etc/GMT+12\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Etc/GMT+13\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Etc/GMT+14\",\n {\n \"s\": {\n \"f\": \"+1400\",\n \"n\": \"+14\"\n }\n }\n ],\n [\n \"Etc/GMT+2\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"+02\"\n }\n }\n ],\n [\n \"Etc/GMT+3\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Etc/GMT+4\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Etc/GMT+5\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Etc/GMT+6\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Etc/GMT+7\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Etc/GMT+8\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Etc/GMT+9\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Etc/GMT0\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/Greenwich\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/UCT\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UCT\"\n }\n }\n ],\n [\n \"Etc/Universal\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UTC\"\n }\n }\n ],\n [\n \"Etc/UTC\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UTC\"\n }\n }\n ],\n [\n \"Etc/Zulu\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UTC\"\n }\n }\n ],\n [\n \"Europe/Amsterdam\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Andorra\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Astrakhan\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Athens\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Belgrade\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Berlin\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Bratislava\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Brussels\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Bucharest\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Budapest\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Busingen\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Chisinau\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Copenhagen\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Dublin\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"IST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Gibraltar\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Guernsey\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Helsinki\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Isle_of_Man\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Istanbul\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Europe/Jersey\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Kaliningrad\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"EET\"\n }\n }\n ],\n [\n \"Europe/Kiev\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Kirov\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Europe/Lisbon\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Ljubljana\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/London\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Luxembourg\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Madrid\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Malta\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Mariehamn\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Minsk\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Europe/Monaco\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Moscow\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"MSK\"\n }\n }\n ],\n [\n \"Europe/Nicosia\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Oslo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Paris\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Podgorica\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Prague\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Riga\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Rome\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Samara\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/San_Marino\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Sarajevo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Saratov\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Simferopol\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"MSK\"\n }\n }\n ],\n [\n \"Europe/Skopje\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Sofia\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Stockholm\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Tallinn\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Tirane\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Ulyanovsk\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Uzhgorod\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vaduz\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vatican\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vienna\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vilnius\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Volgograd\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Warsaw\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Zagreb\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Zaporozhye\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Zurich\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Indian/Antananarivo\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Indian/Chagos\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Indian/Christmas\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Indian/Cocos\",\n {\n \"s\": {\n \"f\": \"+0630\",\n \"n\": \"+0630\"\n }\n }\n ],\n [\n \"Indian/Comoro\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Indian/Kerguelen\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Indian/Mahe\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Indian/Maldives\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Indian/Mauritius\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Indian/Mayotte\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Indian/Reunion\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Pacific/Apia\",\n {\n \"s\": {\n \"f\": \"+1400\",\n \"t\": \"+1300\",\n \"n\": \"+13\",\n \"s\": \"19700405T040000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1300\",\n \"t\": \"+1400\",\n \"n\": \"+14\",\n \"s\": \"19700927T030000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Auckland\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"t\": \"+1200\",\n \"n\": \"NZST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1200\",\n \"t\": \"+1300\",\n \"n\": \"NZDT\",\n \"s\": \"19700927T020000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Bougainville\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Chatham\",\n {\n \"s\": {\n \"f\": \"+1345\",\n \"t\": \"+1245\",\n \"n\": \"+1245\",\n \"s\": \"19700405T034500\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1245\",\n \"t\": \"+1345\",\n \"n\": \"+1345\",\n \"s\": \"19700927T024500\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Chuuk\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Pacific/Easter\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"-06\",\n \"s\": \"19700404T220000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SA\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"-05\",\n \"s\": \"19700905T220000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"1SA\"\n }\n }\n }\n ],\n [\n \"Pacific/Efate\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Enderbury\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Pacific/Fakaofo\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Pacific/Fiji\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"t\": \"+1200\",\n \"n\": \"+12\",\n \"s\": \"19700118T030000\",\n \"r\": {\n \"m\": 1,\n \"d\": \"-2SU\"\n }\n },\n \"d\": {\n \"f\": \"+1200\",\n \"t\": \"+1300\",\n \"n\": \"+13\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Funafuti\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Galapagos\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"-06\"\n }\n }\n ],\n [\n \"Pacific/Gambier\",\n {\n \"s\": {\n \"f\": \"-0900\",\n \"n\": \"-09\"\n }\n }\n ],\n [\n \"Pacific/Guadalcanal\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Guam\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"ChST\"\n }\n }\n ],\n [\n \"Pacific/Honolulu\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"HST\"\n }\n }\n ],\n [\n \"Pacific/Kiritimati\",\n {\n \"s\": {\n \"f\": \"+1400\",\n \"n\": \"+14\"\n }\n }\n ],\n [\n \"Pacific/Kosrae\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Kwajalein\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Majuro\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Marquesas\",\n {\n \"s\": {\n \"f\": \"-0930\",\n \"n\": \"-0930\"\n }\n }\n ],\n [\n \"Pacific/Midway\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"SST\"\n }\n }\n ],\n [\n \"Pacific/Nauru\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Niue\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"-11\"\n }\n }\n ],\n [\n \"Pacific/Norfolk\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Noumea\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Pago_Pago\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"SST\"\n }\n }\n ],\n [\n \"Pacific/Palau\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Pacific/Pitcairn\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"n\": \"-08\"\n }\n }\n ],\n [\n \"Pacific/Pohnpei\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Port_Moresby\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Pacific/Rarotonga\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"-10\"\n }\n }\n ],\n [\n \"Pacific/Saipan\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"ChST\"\n }\n }\n ],\n [\n \"Pacific/Tahiti\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"-10\"\n }\n }\n ],\n [\n \"Pacific/Tarawa\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Tongatapu\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Pacific/Wake\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Wallis\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ]\n]);\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nmodule.exports = LazyWrapper;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nmodule.exports = baseLodash;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var identity = require('./identity'),\n metaMap = require('./_metaMap');\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n};\n\nmodule.exports = baseSetData;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\nmodule.exports = composeArgs;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\nmodule.exports = composeArgsRight;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\nmodule.exports = countHolders;\n","var createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\nmodule.exports = createBind;\n","var baseCreate = require('./_baseCreate'),\n isObject = require('./isObject');\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\nmodule.exports = createCtor;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n createHybrid = require('./_createHybrid'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createCurry;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n countHolders = require('./_countHolders'),\n createCtor = require('./_createCtor'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n reorder = require('./_reorder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_ARY_FLAG = 128,\n WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\nmodule.exports = createHybrid;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createPartial;\n","var isLaziable = require('./_isLaziable'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\nmodule.exports = createRecurry;\n","var baseSetData = require('./_baseSetData'),\n createBind = require('./_createBind'),\n createCurry = require('./_createCurry'),\n createHybrid = require('./_createHybrid'),\n createPartial = require('./_createPartial'),\n getData = require('./_getData'),\n mergeData = require('./_mergeData'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString'),\n toInteger = require('./toInteger');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\nmodule.exports = createWrap;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var metaMap = require('./_metaMap'),\n noop = require('./noop');\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n","var realNames = require('./_realNames');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nmodule.exports = getFuncName;\n","/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\nmodule.exports = getHolder;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\nmodule.exports = getWrapDetails;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\nmodule.exports = insertWrapDetails;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var LazyWrapper = require('./_LazyWrapper'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n lodash = require('./wrapperLodash');\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nmodule.exports = isLaziable;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n replaceHolders = require('./_replaceHolders');\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n}\n\nmodule.exports = mergeData;\n","var WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\n","var copyArray = require('./_copyArray'),\n isIndex = require('./_isIndex');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\nmodule.exports = reorder;\n","/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\nmodule.exports = replaceHolders;\n","var baseSetData = require('./_baseSetData'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nmodule.exports = setData;\n","var getWrapDetails = require('./_getWrapDetails'),\n insertWrapDetails = require('./_insertWrapDetails'),\n setToString = require('./_setToString'),\n updateWrapDetails = require('./_updateWrapDetails');\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nmodule.exports = setWrapToString;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var arrayEach = require('./_arrayEach'),\n arrayIncludes = require('./_arrayIncludes');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\nmodule.exports = updateWrapDetails;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n copyArray = require('./_copyArray');\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nmodule.exports = wrapperClone;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_ARY_FLAG = 128;\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\nfunction ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n}\n\nmodule.exports = ary;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nmodule.exports = curry;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var mapping = require('./_mapping'),\n fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n return n == 2\n ? function(a, b) { return func.apply(undefined, arguments); }\n : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n return n == 2\n ? function(a, b) { return func(a, b); }\n : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n var length = array ? array.length : 0,\n result = Array(length);\n\n while (length--) {\n result[length] = array[length];\n }\n return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n return function(object) {\n return func({}, object);\n };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n return function() {\n var length = arguments.length,\n lastIndex = length - 1,\n args = Array(length);\n\n while (length--) {\n args[length] = arguments[length];\n }\n var array = args[start],\n otherArgs = args.slice(0, start);\n\n if (array) {\n push.apply(otherArgs, array);\n }\n if (start != lastIndex) {\n push.apply(otherArgs, args.slice(start + 1));\n }\n return func.apply(this, otherArgs);\n };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return;\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var result = args[0] = cloner.apply(undefined, args);\n func.apply(undefined, args);\n return result;\n };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n var isLib = typeof name == 'function',\n isObj = name === Object(name);\n\n if (isObj) {\n options = func;\n func = name;\n name = undefined;\n }\n if (func == null) {\n throw new TypeError;\n }\n options || (options = {});\n\n var config = {\n 'cap': 'cap' in options ? options.cap : true,\n 'curry': 'curry' in options ? options.curry : true,\n 'fixed': 'fixed' in options ? options.fixed : true,\n 'immutable': 'immutable' in options ? options.immutable : true,\n 'rearg': 'rearg' in options ? options.rearg : true\n };\n\n var defaultHolder = isLib ? func : fallbackHolder,\n forceCurry = ('curry' in options) && options.curry,\n forceFixed = ('fixed' in options) && options.fixed,\n forceRearg = ('rearg' in options) && options.rearg,\n pristine = isLib ? func.runInContext() : undefined;\n\n var helpers = isLib ? func : {\n 'ary': util.ary,\n 'assign': util.assign,\n 'clone': util.clone,\n 'curry': util.curry,\n 'forEach': util.forEach,\n 'isArray': util.isArray,\n 'isError': util.isError,\n 'isFunction': util.isFunction,\n 'isWeakMap': util.isWeakMap,\n 'iteratee': util.iteratee,\n 'keys': util.keys,\n 'rearg': util.rearg,\n 'toInteger': util.toInteger,\n 'toPath': util.toPath\n };\n\n var ary = helpers.ary,\n assign = helpers.assign,\n clone = helpers.clone,\n curry = helpers.curry,\n each = helpers.forEach,\n isArray = helpers.isArray,\n isError = helpers.isError,\n isFunction = helpers.isFunction,\n isWeakMap = helpers.isWeakMap,\n keys = helpers.keys,\n rearg = helpers.rearg,\n toInteger = helpers.toInteger,\n toPath = helpers.toPath;\n\n var aryMethodKeys = keys(mapping.aryMethod);\n\n var wrappers = {\n 'castArray': function(castArray) {\n return function() {\n var value = arguments[0];\n return isArray(value)\n ? castArray(cloneArray(value))\n : castArray.apply(undefined, arguments);\n };\n },\n 'iteratee': function(iteratee) {\n return function() {\n var func = arguments[0],\n arity = arguments[1],\n result = iteratee(func, arity),\n length = result.length;\n\n if (config.cap && typeof arity == 'number') {\n arity = arity > 2 ? (arity - 2) : 1;\n return (length && length <= arity) ? result : baseAry(result, arity);\n }\n return result;\n };\n },\n 'mixin': function(mixin) {\n return function(source) {\n var func = this;\n if (!isFunction(func)) {\n return mixin(func, Object(source));\n }\n var pairs = [];\n each(keys(source), function(key) {\n if (isFunction(source[key])) {\n pairs.push([key, func.prototype[key]]);\n }\n });\n\n mixin(func, Object(source));\n\n each(pairs, function(pair) {\n var value = pair[1];\n if (isFunction(value)) {\n func.prototype[pair[0]] = value;\n } else {\n delete func.prototype[pair[0]];\n }\n });\n return func;\n };\n },\n 'nthArg': function(nthArg) {\n return function(n) {\n var arity = n < 0 ? 1 : (toInteger(n) + 1);\n return curry(nthArg(n), arity);\n };\n },\n 'rearg': function(rearg) {\n return function(func, indexes) {\n var arity = indexes ? indexes.length : 0;\n return curry(rearg(func, indexes), arity);\n };\n },\n 'runInContext': function(runInContext) {\n return function(context) {\n return baseConvert(util, runInContext(context), options);\n };\n }\n };\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Casts `func` to a function with an arity capped iteratee if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @returns {Function} Returns the cast function.\n */\n function castCap(name, func) {\n if (config.cap) {\n var indexes = mapping.iterateeRearg[name];\n if (indexes) {\n return iterateeRearg(func, indexes);\n }\n var n = !isLib && mapping.iterateeAry[name];\n if (n) {\n return iterateeAry(func, n);\n }\n }\n return func;\n }\n\n /**\n * Casts `func` to a curried function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castCurry(name, func, n) {\n return (forceCurry || (config.curry && n > 1))\n ? curry(func, n)\n : func;\n }\n\n /**\n * Casts `func` to a fixed arity function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the cast function.\n */\n function castFixed(name, func, n) {\n if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n var data = mapping.methodSpread[name],\n start = data && data.start;\n\n return start === undefined ? ary(func, n) : flatSpread(func, start);\n }\n return func;\n }\n\n /**\n * Casts `func` to an rearged function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castRearg(name, func, n) {\n return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n : func;\n }\n\n /**\n * Creates a clone of `object` by `path`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {Array|string} path The path to clone by.\n * @returns {Object} Returns the cloned object.\n */\n function cloneByPath(object, path) {\n path = toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n result = clone(Object(object)),\n nested = result;\n\n while (nested != null && ++index < length) {\n var key = path[index],\n value = nested[key];\n\n if (value != null &&\n !(isFunction(value) || isError(value) || isWeakMap(value))) {\n nested[key] = clone(index == lastIndex ? value : Object(value));\n }\n nested = nested[key];\n }\n return result;\n }\n\n /**\n * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied.\n *\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function} Returns the converted `lodash`.\n */\n function convertLib(options) {\n return _.runInContext.convert(options)(undefined);\n }\n\n /**\n * Create a converter function for `func` of `name`.\n *\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @returns {Function} Returns the new converter function.\n */\n function createConverter(name, func) {\n var realName = mapping.aliasToReal[name] || name,\n methodName = mapping.remap[realName] || realName,\n oldOptions = options;\n\n return function(options) {\n var newUtil = isLib ? pristine : helpers,\n newFunc = isLib ? pristine[methodName] : func,\n newOptions = assign(assign({}, oldOptions), options);\n\n return baseConvert(newUtil, realName, newFunc, newOptions);\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n * arguments, ignoring any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap iteratee arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\n function iterateeAry(func, n) {\n return overArg(func, function(func) {\n return typeof func == 'function' ? baseAry(func, n) : func;\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee with arguments\n * arranged according to the specified `indexes` where the argument value at\n * the first index is provided as the first argument, the argument value at\n * the second index is provided as the second argument, and so on.\n *\n * @private\n * @param {Function} func The function to rearrange iteratee arguments for.\n * @param {number[]} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n */\n function iterateeRearg(func, indexes) {\n return overArg(func, function(func) {\n var n = indexes.length;\n return baseArity(rearg(baseAry(func, n), indexes), n);\n });\n }\n\n /**\n * Creates a function that invokes `func` with its first argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return func();\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var index = config.rearg ? 0 : (length - 1);\n args[index] = transform(args[index]);\n return func.apply(undefined, args);\n };\n }\n\n /**\n * Creates a function that wraps `func` and applys the conversions\n * rules by `name`.\n *\n * @private\n * @param {string} name The name of the function to wrap.\n * @param {Function} func The function to wrap.\n * @returns {Function} Returns the converted function.\n */\n function wrap(name, func, placeholder) {\n var result,\n realName = mapping.aliasToReal[name] || name,\n wrapped = func,\n wrapper = wrappers[realName];\n\n if (wrapper) {\n wrapped = wrapper(func);\n }\n else if (config.immutable) {\n if (mapping.mutate.array[realName]) {\n wrapped = wrapImmutable(func, cloneArray);\n }\n else if (mapping.mutate.object[realName]) {\n wrapped = wrapImmutable(func, createCloner(func));\n }\n else if (mapping.mutate.set[realName]) {\n wrapped = wrapImmutable(func, cloneByPath);\n }\n }\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(otherName) {\n if (realName == otherName) {\n var data = mapping.methodSpread[realName],\n afterRearg = data && data.afterRearg;\n\n result = afterRearg\n ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n result = castCap(realName, result);\n result = castCurry(realName, result, aryKey);\n return false;\n }\n });\n return !result;\n });\n\n result || (result = wrapped);\n if (result == func) {\n result = forceCurry ? curry(result, 1) : function() {\n return func.apply(this, arguments);\n };\n }\n result.convert = createConverter(realName, func);\n result.placeholder = func.placeholder = placeholder;\n\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n if (!isObj) {\n return wrap(name, func, defaultHolder);\n }\n var _ = func;\n\n // Convert methods by ary cap.\n var pairs = [];\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(key) {\n var func = _[mapping.remap[key] || key];\n if (func) {\n pairs.push([key, wrap(key, func, _)]);\n }\n });\n });\n\n // Convert remaining methods.\n each(keys(_), function(key) {\n var func = _[key];\n if (typeof func == 'function') {\n var length = pairs.length;\n while (length--) {\n if (pairs[length][0] == key) {\n return;\n }\n }\n func.convert = createConverter(key, func);\n pairs.push([key, func]);\n }\n });\n\n // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n each(pairs, function(pair) {\n _[pair[0]] = pair[1];\n });\n\n _.convert = convertLib;\n _.placeholder = _;\n\n // Assign aliases.\n each(keys(_), function(key) {\n each(mapping.realToAlias[key] || [], function(alias) {\n _[alias] = _[key];\n });\n });\n\n return _;\n}\n\nmodule.exports = baseConvert;\n","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n // Lodash aliases.\n 'each': 'forEach',\n 'eachRight': 'forEachRight',\n 'entries': 'toPairs',\n 'entriesIn': 'toPairsIn',\n 'extend': 'assignIn',\n 'extendAll': 'assignInAll',\n 'extendAllWith': 'assignInAllWith',\n 'extendWith': 'assignInWith',\n 'first': 'head',\n\n // Methods that are curried variants of others.\n 'conforms': 'conformsTo',\n 'matches': 'isMatch',\n 'property': 'get',\n\n // Ramda aliases.\n '__': 'placeholder',\n 'F': 'stubFalse',\n 'T': 'stubTrue',\n 'all': 'every',\n 'allPass': 'overEvery',\n 'always': 'constant',\n 'any': 'some',\n 'anyPass': 'overSome',\n 'apply': 'spread',\n 'assoc': 'set',\n 'assocPath': 'set',\n 'complement': 'negate',\n 'compose': 'flowRight',\n 'contains': 'includes',\n 'dissoc': 'unset',\n 'dissocPath': 'unset',\n 'dropLast': 'dropRight',\n 'dropLastWhile': 'dropRightWhile',\n 'equals': 'isEqual',\n 'identical': 'eq',\n 'indexBy': 'keyBy',\n 'init': 'initial',\n 'invertObj': 'invert',\n 'juxt': 'over',\n 'omitAll': 'omit',\n 'nAry': 'ary',\n 'path': 'get',\n 'pathEq': 'matchesProperty',\n 'pathOr': 'getOr',\n 'paths': 'at',\n 'pickAll': 'pick',\n 'pipe': 'flow',\n 'pluck': 'map',\n 'prop': 'get',\n 'propEq': 'matchesProperty',\n 'propOr': 'getOr',\n 'props': 'at',\n 'symmetricDifference': 'xor',\n 'symmetricDifferenceBy': 'xorBy',\n 'symmetricDifferenceWith': 'xorWith',\n 'takeLast': 'takeRight',\n 'takeLastWhile': 'takeRightWhile',\n 'unapply': 'rest',\n 'unnest': 'flatten',\n 'useWith': 'overArgs',\n 'where': 'conformsTo',\n 'whereEq': 'isMatch',\n 'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n '1': [\n 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n 'uniqueId', 'words', 'zipAll'\n ],\n '2': [\n 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n 'zipObjectDeep'\n ],\n '3': [\n 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n 'xorWith', 'zipWith'\n ],\n '4': [\n 'fill', 'setWith', 'updateWith'\n ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n '2': [1, 0],\n '3': [2, 0, 1],\n '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n 'dropRightWhile': 1,\n 'dropWhile': 1,\n 'every': 1,\n 'filter': 1,\n 'find': 1,\n 'findFrom': 1,\n 'findIndex': 1,\n 'findIndexFrom': 1,\n 'findKey': 1,\n 'findLast': 1,\n 'findLastFrom': 1,\n 'findLastIndex': 1,\n 'findLastIndexFrom': 1,\n 'findLastKey': 1,\n 'flatMap': 1,\n 'flatMapDeep': 1,\n 'flatMapDepth': 1,\n 'forEach': 1,\n 'forEachRight': 1,\n 'forIn': 1,\n 'forInRight': 1,\n 'forOwn': 1,\n 'forOwnRight': 1,\n 'map': 1,\n 'mapKeys': 1,\n 'mapValues': 1,\n 'partition': 1,\n 'reduce': 2,\n 'reduceRight': 2,\n 'reject': 1,\n 'remove': 1,\n 'some': 1,\n 'takeRightWhile': 1,\n 'takeWhile': 1,\n 'times': 1,\n 'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n 'mapKeys': [1],\n 'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n 'assignInAllWith': [1, 0],\n 'assignInWith': [1, 2, 0],\n 'assignAllWith': [1, 0],\n 'assignWith': [1, 2, 0],\n 'differenceBy': [1, 2, 0],\n 'differenceWith': [1, 2, 0],\n 'getOr': [2, 1, 0],\n 'intersectionBy': [1, 2, 0],\n 'intersectionWith': [1, 2, 0],\n 'isEqualWith': [1, 2, 0],\n 'isMatchWith': [2, 1, 0],\n 'mergeAllWith': [1, 0],\n 'mergeWith': [1, 2, 0],\n 'padChars': [2, 1, 0],\n 'padCharsEnd': [2, 1, 0],\n 'padCharsStart': [2, 1, 0],\n 'pullAllBy': [2, 1, 0],\n 'pullAllWith': [2, 1, 0],\n 'rangeStep': [1, 2, 0],\n 'rangeStepRight': [1, 2, 0],\n 'setWith': [3, 1, 2, 0],\n 'sortedIndexBy': [2, 1, 0],\n 'sortedLastIndexBy': [2, 1, 0],\n 'unionBy': [1, 2, 0],\n 'unionWith': [1, 2, 0],\n 'updateWith': [3, 1, 2, 0],\n 'xorBy': [1, 2, 0],\n 'xorWith': [1, 2, 0],\n 'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n 'assignAll': { 'start': 0 },\n 'assignAllWith': { 'start': 0 },\n 'assignInAll': { 'start': 0 },\n 'assignInAllWith': { 'start': 0 },\n 'defaultsAll': { 'start': 0 },\n 'defaultsDeepAll': { 'start': 0 },\n 'invokeArgs': { 'start': 2 },\n 'invokeArgsMap': { 'start': 2 },\n 'mergeAll': { 'start': 0 },\n 'mergeAllWith': { 'start': 0 },\n 'partial': { 'start': 1 },\n 'partialRight': { 'start': 1 },\n 'without': { 'start': 1 },\n 'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n 'array': {\n 'fill': true,\n 'pull': true,\n 'pullAll': true,\n 'pullAllBy': true,\n 'pullAllWith': true,\n 'pullAt': true,\n 'remove': true,\n 'reverse': true\n },\n 'object': {\n 'assign': true,\n 'assignAll': true,\n 'assignAllWith': true,\n 'assignIn': true,\n 'assignInAll': true,\n 'assignInAllWith': true,\n 'assignInWith': true,\n 'assignWith': true,\n 'defaults': true,\n 'defaultsAll': true,\n 'defaultsDeep': true,\n 'defaultsDeepAll': true,\n 'merge': true,\n 'mergeAll': true,\n 'mergeAllWith': true,\n 'mergeWith': true,\n },\n 'set': {\n 'set': true,\n 'setWith': true,\n 'unset': true,\n 'update': true,\n 'updateWith': true\n }\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n object = exports.aliasToReal,\n result = {};\n\n for (var key in object) {\n var value = object[key];\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n 'assignAll': 'assign',\n 'assignAllWith': 'assignWith',\n 'assignInAll': 'assignIn',\n 'assignInAllWith': 'assignInWith',\n 'curryN': 'curry',\n 'curryRightN': 'curryRight',\n 'defaultsAll': 'defaults',\n 'defaultsDeepAll': 'defaultsDeep',\n 'findFrom': 'find',\n 'findIndexFrom': 'findIndex',\n 'findLastFrom': 'findLast',\n 'findLastIndexFrom': 'findLastIndex',\n 'getOr': 'get',\n 'includesFrom': 'includes',\n 'indexOfFrom': 'indexOf',\n 'invokeArgs': 'invoke',\n 'invokeArgsMap': 'invokeMap',\n 'lastIndexOfFrom': 'lastIndexOf',\n 'mergeAll': 'merge',\n 'mergeAllWith': 'mergeWith',\n 'padChars': 'pad',\n 'padCharsEnd': 'padEnd',\n 'padCharsStart': 'padStart',\n 'propertyOf': 'get',\n 'rangeStep': 'range',\n 'rangeStepRight': 'rangeRight',\n 'restFrom': 'rest',\n 'spreadFrom': 'spread',\n 'trimChars': 'trim',\n 'trimCharsEnd': 'trimEnd',\n 'trimCharsStart': 'trimStart',\n 'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n 'castArray': true,\n 'flow': true,\n 'flowRight': true,\n 'iteratee': true,\n 'mixin': true,\n 'rearg': true,\n 'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n 'add': true,\n 'assign': true,\n 'assignIn': true,\n 'bind': true,\n 'bindKey': true,\n 'concat': true,\n 'difference': true,\n 'divide': true,\n 'eq': true,\n 'gt': true,\n 'gte': true,\n 'isEqual': true,\n 'lt': true,\n 'lte': true,\n 'matchesProperty': true,\n 'merge': true,\n 'multiply': true,\n 'overArgs': true,\n 'partial': true,\n 'partialRight': true,\n 'propertyOf': true,\n 'random': true,\n 'range': true,\n 'rangeRight': true,\n 'subtract': true,\n 'zip': true,\n 'zipObject': true,\n 'zipObjectDeep': true\n};\n","module.exports = {\n 'ary': require('../ary'),\n 'assign': require('../_baseAssign'),\n 'clone': require('../clone'),\n 'curry': require('../curry'),\n 'forEach': require('../_arrayEach'),\n 'isArray': require('../isArray'),\n 'isError': require('../isError'),\n 'isFunction': require('../isFunction'),\n 'isWeakMap': require('../isWeakMap'),\n 'iteratee': require('../iteratee'),\n 'keys': require('../_baseKeys'),\n 'rearg': require('../rearg'),\n 'toInteger': require('../toInteger'),\n 'toPath': require('../toPath')\n};\n","var baseConvert = require('./_baseConvert'),\n util = require('./_util');\n\n/**\n * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied. If `name` is an object its methods\n * will be converted.\n *\n * @param {string} name The name of the function to wrap.\n * @param {Function} [func] The function to wrap.\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction convert(name, func, options) {\n return baseConvert(util, name, func, options);\n}\n\nmodule.exports = convert;\n","var convert = require('./convert'),\n func = convert('memoize', require('../memoize'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike'),\n isPlainObject = require('./isPlainObject');\n\n/** `Object#toString` result references. */\nvar domExcTag = '[object DOMException]',\n errorTag = '[object Error]';\n\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\nfunction isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n}\n\nmodule.exports = isError;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar weakMapTag = '[object WeakMap]';\n\n/**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\nfunction isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n}\n\nmodule.exports = isWeakMap;\n","var baseClone = require('./_baseClone'),\n baseIteratee = require('./_baseIteratee');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\nfunction iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n}\n\nmodule.exports = iteratee;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createWrap = require('./_createWrap'),\n flatRest = require('./_flatRest');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\nvar rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n});\n\nmodule.exports = rearg;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var arrayMap = require('./_arrayMap'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol'),\n stringToPath = require('./_stringToPath'),\n toKey = require('./_toKey'),\n toString = require('./toString');\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nmodule.exports = toPath;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n baseLodash = require('./_baseLodash'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike'),\n wrapperClone = require('./_wrapperClone');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nmodule.exports = lodash;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1217\":\"d0aeec3ee0262488070e\",\"1604\":\"6a510d4cf1bd867d5fbe\",\"3464\":\"da3f433d6dae2decd014\",\"6505\":\"6e3d238a222c70d34234\",\"6597\":\"795278daef2cde13fc91\",\"7859\":\"6845fc5b7d6a462f711e\",\"9054\":\"3e6acf6cd878c83201a9\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 3705;","// set .name for anonymous default exports per ES spec\n__webpack_require__.dn = (x) => {\n\t(Object.getOwnPropertyDescriptor(x, \"name\") || {}).writable || Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3705: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud\"] = globalThis[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(30748)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","formatDateAsYMD","date","getFullYear","getMonth","toString","padStart","getDate","service_logger","getLoggerBuilder","setApp","detectUser","build","inputAdjustDate","timezoneOffsetMilliseconds","getTimezoneOffset","Date","getTime","components_AbsenceFormvue_type_script_lang_js","name","components","NcButton","A","NcTextField","NcTextArea","NcDateTimePickerNative","NcSelect","data","firstDay","lastDay","status","message","replacementUserId","replacementUserDisplayName","loadState","loading","replacementUser","user","displayName","searchLoading","options","computed","valid","this","setHours","methods","resetForm","formatForMultiselect","result","uuid","value","shareWith","label","subtitle","dsc","asyncFind","query","debounceGetSuggestions","trim","getSuggestions","search","shareType","ShareType","User","request","axios","get","generateOcsUrl","params","format","itemType","error","console","ocs","exact","rawExactSuggestions","users","rawSuggestions","info","exactSuggestions","map","share","suggestions","allSuggestions","concat","nameCounts","reduce","item","desc","shareWithDisplayNameUnique","debounce","args","saveForm","post","userId","getCurrentUser","uid","showSuccess","$t","showError","logger","clearAbsence","delete","styleTagTransform","styleTagTransform_default","setAttributes","setAttributesWithoutAttributes_default","insert","insertBySelector_default","bind","domAPI","styleDomAPI_default","insertStyleElement","insertStyleElement_default","injectStylesIntoStyleTag_default","AbsenceFormvue_type_style_index_0_id_a9995350_prod_lang_scss_scoped_true","locals","component","componentNormalizer","_vm","_c","_self","staticClass","on","submit","$event","preventDefault","apply","arguments","attrs","id","required","model","callback","$$v","expression","_v","for","_s","ref","placeholder","clear-search-on-blur","scopedSlots","_u","key","fn","disabled","type","click","AbsenceForm","index_Ctj4Wyhb_options","index_Ctj4Wyhb","Binary","fromString","aString","constructor","aValue","icaltype","decodeValue","_b64_decode","setEncodedValue","_b64_encode","o1","o2","o3","h1","h2","h3","h4","bits","b64","i","ac","enc","tmp_arr","charCodeAt","charAt","length","join","r","slice","dec","indexOf","String","fromCharCode","DURATION_LETTERS","DATA_PROPS_TO_COPY","Duration","fromSeconds","aSeconds","isValueString","string","aStr","pos","dict","Object","create","chunks","numeric","Math","max","parseDurationChunk","Error","fromData","aData","wrappedJSObject","weeks","days","hours","minutes","seconds","isNegative","icalclass","clone","toSeconds","secs","abs","trunc","prop","reset","compare","aOther","thisSeconds","otherSeconds","normalize","str","hasWeeks","toICALString","letter","number","object","num","parseInt","isStrictlyNaN","Period","parts","split","start","Time","fromDateTimeString","end","duration","fromJSON","aProp","aLenient","fromDateOrDateTimeString","dateProp","TypeError","getDuration","subtractDate","getEnd","addDuration","dt","toJSON","static","daysInMonth","month","year","isLeapYear","fromDayOfYear","aDayOfYear","aYear","doy","tt","auto_normalize","is_leap","daysInYearPassedMonth","isDate","day","fromStringv2","fromDateString","strictParseInt","zone","zoneId","Timezone","utcTimezone","getParameter","parent","localTimezone","getTimeZoneByID","timeData","hour","minute","second","timezone","aProperty","fromJSDate","aDate","useUTC","aZone","now","weekOneStarts","aWeekStart","t","dow","dayOfWeek","wkst","DEFAULT_WEEK_START","THURSDAY","getDominicalLetter","yr","LTRS","dom","epochTime","_cmp_attr","a","b","attr","_time","_cachedUnixTime","_pendingNormalization","_getTimeAttr","val","_setTimeAttr","_normalize","adjust","resetTo","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getHours","getMinutes","getSeconds","entries","TimezoneService","firstDow","SUNDAY","dowCacheKey","_dowCache","q","m","Y","h","dayOfYear","startOfWeek","endOfWeek","startOfMonth","endOfMonth","startOfYear","endOfYear","startDoyWeek","aFirstDayOfWeek","delta","nthWeekDay","aDayOfWeek","aPos","weekday","otherDay","offset","isNthWeekDay","weekNumber","week1","wnCacheKey","_wnCache","isoyear","answer","aDuration","mult","unixTime","toUnixTime","utcOffset","other","subtractDateTz","compareDateOnlyTz","tz","convertToZone","rc","copy","zone_equals","tzid","convert_time","design","icalendar","toICAL","pad2","toJSDate","aExtraDays","aExtraHours","aExtraMinutes","aExtraSeconds","aTime","minutesOverflow","hoursOverflow","daysOverflow","yearsOverflow","time","fromUnixTime","ms","UTC","len","CHAR","VALUE_DELIMITER","RFC6868_REPLACE_MAP$1","parse","input","state","root","stack","_eachLine","err","line","_handleContentLine","ParserError","property","designSet","defaultSet","lastParamIndex","lastValuePos","parsedParams","valueType","valuePos","paramPos","toLowerCase","_parseParameters","parsedParamLength","accumulator","currentValue","newComponent","push","getDesignSet","pop","propertyDetails","splitName","ungroupedName","multiValue","structuredValue","propertyGroups","group","detectType","defaultType","_parseMultiValue","_parseValue","fromICAL","lcname","mvdelim","lastParam","param","multiValueSeparateDQuote","_rfc6868Escape","extendedValue","propValuePos","nextPos","length_before","delimiter","Array","isArray","replace","x","buffer","delim","innerMulti","lastPos","unescapedIndexOf","firstChar","newlineOffset","OPTIONS","_compare_change_fn","from_zone","to_zone","adjust_change","change","prototype","call","location","tznames","latitude","longitude","expandedUntilYear","changes","Component","jCal","getFirstPropertyValue","_ensureCoverage","tt_change","change_num","_findNearbyChange","change_num_to_use","step","prevUtcOffset","zone_change","tmp_change","prev_zone_change","want_daylight","is_daylight","idx","binsearchInsert","_minimumExpansionYear","today","changesEndYear","EXTRA_COVERAGE","subcomps","getAllSubcomponents","compLen","compIdx","_expandComponent","sort","aComponent","hasProperty","dtstart","getFirstProperty","getFirstValue","convert_tzoffset","factor","init_changes","changebase","props","getAllProperties","rdate","rrule","until","occ","iterator","next","zones","count","keys","utc","Z","GMT","_hard_reset","has","register","remove","isNaN","formatClassType","list","seekVal","cmpfunc","mid","cmpval","low","high","floor","aSrc","aDeep","arr","obj","foldline","aLine","line_length","cp","codePointAt","ICALmodule","foldLength","newLineChar","ceil","extend","source","target","descr","getOwnPropertyDescriptor","defineProperty","helpers","freeze","__proto__","updateTimezones","vcal","allsubs","properties","vtimezones","reqTzid","comp","removeSubcomponent","addSubcomponent","UtcOffset","instance","VCardTime","fromDateAndOrTimeString","aIcalType","part","v","s","e","tmz","splitzone","vcard","_splitZone","tm","dtlen","tmlen","hasDashDate","hasDashTime","o","super","y","d","mm","hasMonth","hasDay","hasHour","hasMinute","hasSecond","datepart","timepart","RecurIterator","BYSECOND","BYMINUTE","BYHOUR","BYDAY","BYMONTHDAY","BYYEARDAY","BYWEEKNO","BYMONTH","BYSETPOS","SECONDLY","MINUTELY","HOURLY","DAILY","WEEKLY","MONTHLY","YEARLY","completed","rule","last","occurrence_number","by_indices","initialized","by_data","days_index","Recur","init","InvalidRecurrenceRuleError","sort_byday_rules","freq","setup_defaults","ruleDayOfWeek","wkdy","dayName","numericDayToIcalDay","untilYear","expand_year_days","increment_year","interval","_nextByYearDay","next_year","has_by_data","tempLast","initLast","bydow","dayOfMonth","increment_month","_byDayAndMonthDay","normalized","normalizeByMonthDayRules","filter","next_month","again","before","invalid_count","next_second","next_minute","next_hour","next_day","next_week","check_contracting_rules","next_generic","increment_second","inc","increment_generic","increment_minute","increment_hour","this_freq","increment_monthday","end_of_data","next_weekday_by_week","week_no","rules","newRules","ruleIdx","isInit","byMonthDay","dateLen","byDay","dateIdx","dayLen","dataIsValid","self","initMonth","nextMonth","monthsCounter","dayIdx","data_valid","setpos","setpos_total","last_day","is_day_in_byday","check_set_position","coded_day","matches","match","icalDayToNumericDay","aRuleType","aInterval","aDateAttr","aFollowingAttr","aPreviousIncr","has_by_rule","dta","years","aFactor","aNextIncrement","nextunit","validWeeks","monthIdx","first_week","last_week","weekIdx","partCount","t1","t2","monthday","t3","expand_by_day","first_dow","doy_offset","last_dow","by_month_day","spIndex","month_day","bydayParts","first_matching_day","last_matching_day","expandedDays","weekno","daysInYear","Set","days_list","tmp","start_dow","end_dow","end_year_day","first","this_dow","aRules","j","check_contract_restriction","indexMapValue","_indexMap","ruleMapValue","_expandMap","pass","CONTRACT","ruleType","bydata","weekNo","req","deftime","VALID_DAY_NAMES","VALID_BYDAY_PART","DOW_MAP","SU","MO","MONDAY","TU","TUESDAY","WE","WEDNESDAY","TH","FR","FRIDAY","SA","SATURDAY","REVERSE_DOW_MAP","fromEntries","entry","reverse","ALLOWED_FREQ","_stringToData","fmtIcal","values","ucname","toUpperCase","partDesign","partArr","partSet","add","optionDesign","aStart","isFinite","isByCount","addComponent","aType","setComponent","aValues","getComponent","getNextOccurrence","aStartTime","aRecurrenceId","iter","uckey","INTERVAL","res","k","kparts","parseNumericValue","min","undefined","FREQ","COUNT","UNTIL","WKST","test","FROM_VCARD_NEWLINE","TO_VCARD_NEWLINE","createTextType","fromNewline","toNewline","structuredEscape","newline","RegExp","flags","replaceNewlineReplace","replaceNewline","regEx","DEFAULT_TYPE_TEXT","DEFAULT_TYPE_TEXT_MULTI","DEFAULT_TYPE_TEXT_STRUCTURED","DEFAULT_TYPE_INTEGER","DEFAULT_TYPE_DATETIME_DATE","allowedTypes","DEFAULT_TYPE_DATETIME","DEFAULT_TYPE_URI","DEFAULT_TYPE_UTCOFFSET","DEFAULT_TYPE_RECUR","DEFAULT_TYPE_DATE_ANDOR_TIME","commonProperties","categories","url","version","commonValues","boolean","float","parsed","parseFloat","integer","decorate","undecorate","icalValues","text","uri","binary","aBinary","strict","period","recur","aRecur","icalProperties","action","attach","attendee","calscale","class","comment","contact","created","description","dtend","dtstamp","due","exdate","exrule","freebusy","geo","method","organizer","priority","prodid","repeat","resources","sequence","summary","transp","trigger","tzoffsetfrom","tzoffsetto","tzurl","tzname","vcardValues","isFromIcal","lastChar","signChar","sign","timestamp","from","c","vcardProperties","adr","anniversary","bday","caladruri","caluri","clientpidmap","email","fburl","gender","impp","kind","lang","logo","member","n","nickname","note","org","photo","related","rev","role","sound","tel","title","xml","vcard3Values","vcard3Properties","mailer","agent","icalSet","cutype","allowXName","allowIanaToken","encoding","fbtype","partstat","range","reltype","rsvp","vcardSet","vcard3Set","vcard3","vevent","vtodo","vjournal","valarm","vtimezone","daylight","standard","componentName","LINE_ENDING","DEFAULT_VALUE_TYPE","RFC6868_REPLACE_MAP","stringify","propIdx","propLen","designSetName","comps","noFold","jsName","groupName","paramName","paramDesign","_rfc6868Unescape","paramPropertyValue","propDetails","isDefault","force","Property","_parent","getDefaultType","_updateType","p","designSetChanged","_designSet","isDecorated","isMultiValue","isStructuredValue","_hydrateValue","index","_values","_decorate","_undecorate","_setDecoratedValue","getFirstParameter","parameters","setParameter","removeParameter","details","resetType","removeAllValues","getValues","setValues","setValue","_timezoneCache","Map","_hydratedPropertyCount","_hydratedComponentCount","_components","_properties","parentDesign","versionProp","_hydrateComponent","_hydrateProperty","getFirstSubcomponent","jCalLen","_removeObjectByIndex","jCalIndex","cache","splice","_removeObject","nameOrObject","objects","cached","_removeAllObjects","nameOrComp","removed","removeAllSubcomponents","addProperty","removeProperty","addPropertyWithValue","updatePropertyWithValue","nameOrProp","removeAllProperties","hydratedZone","set","RecurExpansion","ruleDates","exDates","complete","ruleIterators","ruleDateInc","exDateInc","exDate","ruleDate","_init","_compare_special","currentTry","_nextRecurrenceIter","_nextRuleDay","_nextExDay","_extractDates","propertyName","iters","iterTime","chosenIter","iterIdx","Event","_rangeExceptionCache","exceptions","rangeExceptions","strictExceptions","forEach","relateException","isRecurrenceException","event","recurrenceId","modifiesFuture","compareRangeException","THISANDFUTURE","findRangeException","rangeItem","getOccurrenceDetails","occurrence","utcId","startDate","endDate","rangeExceptionId","exception","startDiff","original","newStart","startTime","isRecurring","getRecurrenceTypes","_firstProp","_setProp","_setTime","attendees","color","propName","debug","ComponentParser","parseEvent","parseTimezone","oncomplete","onerror","ontimezone","onevent","process","ical","esm_browser_native","randomUUID","crypto","getRandomValues","rnds8","Uint8Array","byteToHex","esm_browser_v4","buf","rnds","random","rng","RangeError","unsafeStringify","normalizeComponent","scriptExports","render2","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","render","_compiled","_scopeId","exports","CalendarAvailability","IconAdd","Plus","IconDelete","TrashCanOutline","slots","Boolean","default","l10nTo","l10nDeleteSlot","l10nEmptyDay","l10nAddSlot","l10nWeekDayListLabel","l10nMonday","l10nTuesday","l10nWednesday","l10nThursday","l10nFriday","l10nSaturday","l10nSunday","l10nStartPickerLabel","Function","l10nEndPickerLabel","internalSlots","slotsToInternalData","watch","timeStampSlotsToDateObjectSlots","slot","moToSa","sunday","dist","JN","internalDataToSlots","converted","round","addSlot","onChangeSlots","removeSlot","$emit","_l","$set","size","proxy","_e","dist_logger","logger_dist","YK","getClient","memoize","service","remote","generateRemoteUrl","client","createClient","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","components_AvailabilityFormvue_type_script_setup_true_lang_ts","_defineComponent","__name","setup","__props","getCapabilities","core","Intl","DateTimeFormat","resolvedOptions","timeZone","saving","automated","onMounted","async","slotData","response","customRequest","parseXML","availability","multistatus","propstat","vavailability","parsedIcal","vcalendarComp","vavailabilityComp","timezoneId","timezoneComp","availableComps","availableComp","startIcalDate","endIcalDate","warn","vavailabilityToSlots","findScheduleInboxAvailability","__sfc","save","predefinedTimezoneIcal","icalzone_dist","E$","deduplicated","acc","slots2","byday","slotsToVavailability","flatMap","dayId","saveScheduleInboxAvailability","appId","configKey","configValue","enableUserStatusAutomation","disableUserStatusAutomation","NcCheckboxRadioSwitch","AvailabilityFormvue_type_style_index_0_id_e0a387ae_prod_lang_scss_scoped_true_options","AvailabilityFormvue_type_style_index_0_id_e0a387ae_prod_lang_scss_scoped_true","AvailabilityForm","_setup","_setupProxy","variant","views_Availabilityvue_type_script_lang_js","NcSettingsSection","hideAbsenceSettings","Availability","Vue","translate","$mount","___CSS_LOADER_EXPORT___","_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default","module","sources","names","mappings","sourcesContent","sourceRoot","__WEBPACK_DEFAULT_EXPORT__","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default","zones_1","__webpack_require__","renderZoneSub","f","defaultStart","zoneName","includeWrapper","lines","zoneData","zonesMap","getZoneLines","baseCreate","baseLodash","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","LodashWrapper","chainAll","__chain__","__index__","__values__","array","iteratee","copyObject","keysIn","Stack","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isBuffer","isMap","isObject","isSet","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","customizer","isDeep","isFlat","isFull","isArr","tag","isFunc","stacked","subValue","arrayPush","isFlattenable","baseFlatten","depth","predicate","isStrict","castPath","toKey","path","isObjectLike","baseIsEqual","matchData","noCustomizer","objValue","srcValue","COMPARE_PARTIAL_FLAG","baseMatches","baseMatchesProperty","identity","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","baseGet","metaMap","baseSetData","func","Symbol","arrayMap","isSymbol","symbolProto","symbolToString","baseToString","stringToPath","cloneArrayBuffer","dataView","byteOffset","byteLength","reFlags","regexp","exec","lastIndex","symbolValueOf","valueOf","symbol","nativeMax","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","getSymbols","getSymbolsIn","createCtor","thisArg","isBind","Ctor","wrapper","thisBinding","createHybrid","createRecurry","getHolder","replaceHolders","arity","composeArgs","composeArgsRight","countHolders","reorder","partialsRight","holdersRight","argPos","ary","isAry","isBindKey","isFlip","holdersCount","newHolders","isLaziable","setData","setWrapToString","wrapFunc","isCurry","newData","createBind","createCurry","createPartial","getData","mergeData","toInteger","flatten","overRest","setToString","baseGetAllKeys","noop","realNames","hasOwnProperty","otherFunc","getPrototype","stubArray","getOwnPropertySymbols","reWrapDetails","reSplitDetails","isArguments","isIndex","isLength","hasFunc","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","reWrapComment","spreadableSymbol","isConcatSpreadable","reIsDeepProp","reIsPlainProp","getFuncName","lodash","funcName","clear","PLACEHOLDER","nativeMin","srcBitmask","newBitmask","isCommon","isCombo","WeakMap","indexes","arrLength","oldArray","resIndex","shortOut","getWrapDetails","insertWrapDetails","updateWrapDetails","reference","memoizeCapped","rePropName","reEscapeChar","quote","subString","arrayIncludes","wrapFlags","pair","createWrap","guard","curry","mapping","fallbackHolder","baseAry","cloneArray","wrapImmutable","cloner","baseConvert","util","isLib","isObj","config","cap","fixed","immutable","rearg","defaultHolder","forceCurry","forceFixed","forceRearg","pristine","runInContext","assign","isError","isFunction","isWeakMap","toPath","each","aryMethodKeys","aryMethod","wrappers","castArray","mixin","pairs","nthArg","context","castFixed","skipFixed","methodSpread","otherArgs","flatSpread","castRearg","skipRearg","methodRearg","aryRearg","cloneByPath","nested","createConverter","realName","aliasToReal","methodName","remap","oldOptions","newUtil","newFunc","newOptions","overArg","transform","wrap","wrapped","mutate","createCloner","aryKey","otherName","afterRearg","castCurry","iterateeRearg","baseArity","iterateeAry","castCap","convert","_","realToAlias","alias","eachRight","entriesIn","extendAll","extendAllWith","extendWith","conforms","__","F","T","all","allPass","always","any","anyPass","assoc","assocPath","complement","compose","contains","dissoc","dissocPath","dropLast","dropLastWhile","equals","identical","indexBy","invertObj","juxt","omitAll","nAry","pathEq","pathOr","paths","pickAll","pipe","pluck","propEq","propOr","symmetricDifference","symmetricDifferenceBy","symmetricDifferenceWith","takeLast","takeLastWhile","unapply","unnest","useWith","where","whereEq","zipObj","dropRightWhile","dropWhile","every","find","findFrom","findIndex","findIndexFrom","findKey","findLast","findLastFrom","findLastIndex","findLastIndexFrom","findLastKey","flatMapDeep","flatMapDepth","forEachRight","forIn","forInRight","forOwn","forOwnRight","mapKeys","mapValues","partition","reduceRight","reject","some","takeRightWhile","takeWhile","times","assignInAllWith","assignInWith","assignAllWith","assignWith","differenceBy","differenceWith","getOr","intersectionBy","intersectionWith","isEqualWith","isMatchWith","mergeAllWith","mergeWith","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","setWith","sortedIndexBy","sortedLastIndexBy","unionBy","unionWith","updateWith","xorBy","xorWith","zipWith","assignAll","assignInAll","defaultsAll","defaultsDeepAll","invokeArgs","invokeArgsMap","mergeAll","partial","partialRight","without","zipAll","fill","pull","pullAll","pullAt","assignIn","defaults","defaultsDeep","merge","unset","update","curryN","curryRightN","includesFrom","indexOfFrom","lastIndexOfFrom","propertyOf","restFrom","spreadFrom","trimChars","trimCharsEnd","trimCharsStart","flow","flowRight","bindKey","difference","divide","eq","gt","gte","isEqual","lt","lte","matchesProperty","multiply","overArgs","rangeRight","subtract","zip","zipObject","zipObjectDeep","defaultValue","baseHasIn","hasPath","baseGetTag","isPlainObject","baseIsMap","baseUnary","nodeUtil","nodeIsMap","baseIsSet","nodeIsSet","baseIteratee","MapCache","resolver","memoized","Cache","baseProperty","basePropertyDeep","flatRest","toNumber","INFINITY","toFinite","remainder","wrapperClone","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","notFulfilled","Infinity","fulfilled","getter","__esModule","definition","enumerable","chunkId","Promise","promises","u","l","done","script","needAttach","scripts","document","getElementsByTagName","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","prev","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","head","appendChild","toStringTag","nmd","children","dn","writable","configurable","scriptUrl","globalThis","importScripts","currentScript","tagName","baseURI","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file