diff --git a/css/logreader-main.css b/css/logreader-main.css index 4bfd2323..5fa0a2c0 100644 --- a/css/logreader-main.css +++ b/css/logreader-main.css @@ -1,2 +1,2 @@ /* extracted by css-entry-points-plugin */ -@import './main-D7XliQtq.chunk.css'; \ No newline at end of file +@import './main-BgQpoKI5.chunk.css'; \ No newline at end of file diff --git a/css/main-BgQpoKI5.chunk.css b/css/main-BgQpoKI5.chunk.css new file mode 100644 index 00000000..1bf78879 --- /dev/null +++ b/css/main-BgQpoKI5.chunk.css @@ -0,0 +1,16 @@ +@charset "UTF-8";.material-design-icon[data-v-bfde1a98]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue[data-v-bfde1a98]{--button-size: var(--default-clickable-area);--button-inner-size: calc(var(--button-size) - 4px);--button-radius: var(--border-radius-element, calc(var(--button-size) / 2));--button-padding-default: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4));--button-padding: var(--default-grid-baseline) var(--button-padding-default);color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light);border:1px solid var(--color-primary-element-light-hover);border-bottom-width:2px;border-radius:var(--button-radius);box-sizing:border-box;position:relative;width:fit-content;overflow:hidden;padding-block:1px 0;padding-inline:var(--button-padding);min-height:var(--button-size);min-width:var(--button-size);display:flex;align-items:center;justify-content:center;transition-property:color,border-color,background-color;transition-duration:.1s;transition-timing-function:linear;cursor:pointer;font-size:var(--default-font-size);font-weight:700}.button-vue--size-small[data-v-bfde1a98]{--button-size: var(--clickable-area-small, 24px);--button-radius: var(--border-radius)}.button-vue--size-large[data-v-bfde1a98]{--button-size: var(--clickable-area-large, 48px)}.button-vue[data-v-bfde1a98],.button-vue[data-v-bfde1a98] *{cursor:pointer}.button-vue[data-v-bfde1a98]:focus{outline:none}.button-vue[data-v-bfde1a98]:disabled{cursor:default;opacity:.5;filter:saturate(.7)}.button-vue[data-v-bfde1a98]:disabled *{cursor:default}.button-vue[data-v-bfde1a98]:hover:not(:disabled){background-color:var(--color-primary-element-light-hover)}.button-vue[data-v-bfde1a98]:active{background-color:var(--color-primary-element-light)}.button-vue__wrapper[data-v-bfde1a98]{display:inline-flex;align-items:center;justify-content:center;width:100%}.button-vue--end .button-vue__wrapper[data-v-bfde1a98]{justify-content:end}.button-vue--start .button-vue__wrapper[data-v-bfde1a98]{justify-content:start}.button-vue--reverse .button-vue__wrapper[data-v-bfde1a98]{flex-direction:row-reverse}.button-vue--reverse.button-vue--icon-and-text[data-v-bfde1a98]{--button-padding: var(--button-padding-default) var(--default-grid-baseline)}.button-vue__icon[data-v-bfde1a98]{--default-clickable-area: var(--button-inner-size);height:var(--button-inner-size);width:var(--button-inner-size);min-height:var(--button-inner-size);min-width:var(--button-inner-size);display:flex;justify-content:center;align-items:center}.button-vue--size-small .button-vue__icon[data-v-bfde1a98]>*{max-height:16px;max-width:16px}.button-vue--size-small .button-vue__icon[data-v-bfde1a98] svg{height:16px;width:16px}.button-vue__text[data-v-bfde1a98]{font-weight:700;margin-bottom:1px;padding:2px 0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.button-vue--icon-only[data-v-bfde1a98]{--button-padding: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4));line-height:1;width:var(--button-size)!important}.button-vue--text-only[data-v-bfde1a98]{--button-padding: var(--button-padding-default)}.button-vue--text-only .button-vue__text[data-v-bfde1a98]{margin-inline:4px}.button-vue--wide[data-v-bfde1a98]{width:100%}.button-vue[data-v-bfde1a98]:focus-visible{outline:2px solid var(--color-main-text)!important;box-shadow:0 0 0 4px var(--color-main-background)!important}.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-bfde1a98]{outline:2px solid var(--color-primary-element-text);border-radius:var(--border-radius-element, var(--border-radius));background-color:transparent}.button-vue--vue-primary[data-v-bfde1a98]{background-color:var(--color-primary-element);border-color:var(--color-primary-element-hover);color:var(--color-primary-element-text)}.button-vue--vue-primary[data-v-bfde1a98]:hover:not(:disabled){background-color:var(--color-primary-element-hover)}.button-vue--vue-primary[data-v-bfde1a98]:active{background-color:var(--color-primary-element)}.button-vue--vue-secondary[data-v-bfde1a98]{background-color:var(--color-primary-element-light);border-color:var(--color-primary-element-light-hover);color:var(--color-primary-element-light-text)}.button-vue--vue-secondary[data-v-bfde1a98]:hover:not(:disabled){color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light-hover)}.button-vue--tertiary[data-v-bfde1a98],.button-vue--vue-tertiary[data-v-bfde1a98]{background-color:transparent;border-color:transparent;color:var(--color-main-text)}.button-vue--tertiary[data-v-bfde1a98]:hover:not(:disabled),.button-vue--vue-tertiary[data-v-bfde1a98]:hover:not(:disabled){background-color:var(--color-background-hover)}.button-vue--vue-tertiary-no-background[data-v-bfde1a98]:hover:not(:disabled){background-color:transparent}.button-vue--vue-tertiary-on-primary[data-v-bfde1a98]{color:var(--color-primary-element-text)}.button-vue--vue-tertiary-on-primary[data-v-bfde1a98]:hover:not(:disabled){background-color:transparent}.button-vue--vue-success[data-v-bfde1a98]{background-color:var(--color-success);border-color:var(--color-success-hover);color:var(--color-success-text)}.button-vue--vue-success[data-v-bfde1a98]:hover:not(:disabled){background-color:var(--color-success-hover)}.button-vue--vue-success[data-v-bfde1a98]:active{background-color:var(--color-success)}.button-vue--vue-warning[data-v-bfde1a98]{background-color:var(--color-warning);border-color:var(--color-warning-hover);color:var(--color-warning-text)}.button-vue--vue-warning[data-v-bfde1a98]:hover:not(:disabled){background-color:var(--color-warning-hover)}.button-vue--vue-warning[data-v-bfde1a98]:active{background-color:var(--color-warning)}.button-vue--vue-error[data-v-bfde1a98]{background-color:var(--color-error);border-color:var(--color-error-hover);color:var(--color-error-text)}.button-vue--vue-error[data-v-bfde1a98]:hover:not(:disabled){background-color:var(--color-error-hover)}.button-vue--vue-error[data-v-bfde1a98]:active{background-color:var(--color-error)}.button-vue--legacy[data-v-bfde1a98]{--button-inner-size: var(--button-size);border:none;padding-block:0}.button-vue--legacy.button-vue--vue-error[data-v-bfde1a98],.button-vue--legacy.button-vue--vue-success[data-v-bfde1a98],.button-vue--legacy.button-vue--vue-warning[data-v-bfde1a98]{color:#fff}.material-design-icon[data-v-e5f606f7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.empty-content[data-v-e5f606f7]{display:flex;align-items:center;flex-direction:column;justify-content:center;flex-grow:1;padding:var(--default-grid-baseline)}.modal-wrapper .empty-content[data-v-e5f606f7]{margin-top:5vh;margin-bottom:5vh}.empty-content__icon[data-v-e5f606f7]{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin:0 auto 15px;opacity:.4;background-repeat:no-repeat;background-position:center;background-size:64px}.empty-content__icon[data-v-e5f606f7] svg{width:64px!important;height:64px!important;max-width:64px!important;max-height:64px!important}.empty-content__name[data-v-e5f606f7]{margin-bottom:10px;text-align:center;font-weight:700;font-size:20px;line-height:30px}.empty-content__description[data-v-e5f606f7]{color:var(--color-text-maxcontrast);text-align:center;text-wrap-style:balance}.empty-content__action[data-v-e5f606f7]{margin-top:8px}.modal-wrapper .empty-content__action[data-v-e5f606f7]{margin-top:20px;display:flex}.material-design-icon[data-v-1362be5a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.notecard[data-v-1362be5a]{--note-card-icon-size: 20px;--note-card-padding: calc(2 * var(--default-grid-baseline));color:var(--color-main-text)!important;background-color:var(--note-background)!important;border-inline-start:var(--default-grid-baseline) solid var(--note-theme);border-radius:var(--border-radius);margin:1rem 0;padding:var(--note-card-padding);display:flex;flex-direction:row;gap:var(--note-card-padding)}.notecard__heading[data-v-1362be5a]{font-size:var(--note-card-icon-size);font-weight:600}.notecard__icon--heading[data-v-1362be5a]{font-size:var(--note-card-icon-size);margin-block:calc((1lh - 1em)/2) auto}.notecard--success[data-v-1362be5a]{--note-background: var(--color-success);--note-theme: var(--color-success-text, var(--color-success))}.notecard--info[data-v-1362be5a]{--note-background: var(--color-info);--note-theme: var(--color-info-text, var(--color-info))}.notecard--error[data-v-1362be5a]{--note-background: var(--color-error);--note-theme: var(--color-error-text, var(--color-error))}.notecard--warning[data-v-1362be5a]{--note-background: var(--color-warning);--note-theme: var(--color-warning-text, var(--color-warning))}.notecard--legacy.notecard--error[data-v-1362be5a]{--note-background: rgba(var(--color-error-rgb), .1)}.notecard--legacy.notecard--info[data-v-1362be5a]{--note-background: rgba(var(--color-info-rgb), .1)}.notecard--legacy.notecard--success[data-v-1362be5a]{--note-background: rgba(var(--color-success-rgb), .1)}.notecard--legacy.notecard--warning[data-v-1362be5a]{--note-background: rgba(var(--color-warning-rgb), .1)}.material-design-icon[data-v-84140ad4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}[data-v-84140ad4] .app-settings__navigation{min-width:200px;margin-right:calc(4 * var(--default-grid-baseline));overflow-x:hidden;overflow-y:auto;position:relative}[data-v-84140ad4] .app-settings__content{box-sizing:border-box;padding-inline:calc(4 * var(--default-grid-baseline))}.navigation-list[data-v-84140ad4]{height:100%;box-sizing:border-box;overflow-y:auto;padding:calc(3 * var(--default-grid-baseline))}.navigation-list__link[data-v-84140ad4]{display:flex;align-content:center;font-size:16px;height:var(--default-clickable-area);margin:4px 0;line-height:var(--default-clickable-area);border-radius:var(--border-radius-element, var(--border-radius-pill));font-weight:700;padding:0 calc(4 * var(--default-grid-baseline));cursor:pointer;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;background-color:transparent;border:none}.navigation-list__link[data-v-84140ad4]:hover,.navigation-list__link[data-v-84140ad4]:focus{background-color:var(--color-background-hover)}.navigation-list__link--active[data-v-84140ad4]{background-color:var(--color-primary-element-light)!important}.navigation-list__link--icon[data-v-84140ad4]{padding-inline-start:calc(2 * var(--default-grid-baseline));gap:var(--default-grid-baseline)}.navigation-list__link-icon[data-v-84140ad4]{display:flex;justify-content:center;align-content:center;width:calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline));max-width:calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline))}@media only screen and (max-width: 512px){.app-settings[data-v-84140ad4] .dialog__name{padding-inline-start:16px}}@media only screen and (max-width: 512px){.dialog__modal .modal-wrapper--small .modal-container{width:fit-content;height:unset;max-height:90%;position:relative;top:unset;border-radius:var(--border-radius-large)}}.material-design-icon[data-v-66c29e13]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.dialog[data-v-66c29e13]{height:100%;width:100%;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.dialog__modal[data-v-66c29e13] .modal-wrapper .modal-container{display:flex!important;padding-block:4px 0;padding-inline:12px 0}.dialog__modal[data-v-66c29e13] .modal-wrapper .modal-container__content{display:flex;flex-direction:column;overflow:hidden}.dialog__wrapper[data-v-66c29e13]{display:flex;flex-direction:row;flex:1;min-height:0;overflow:hidden}.dialog__wrapper--collapsed[data-v-66c29e13]{flex-direction:column}.dialog__navigation[data-v-66c29e13]{display:flex;flex-shrink:0}.dialog__wrapper:not(.dialog__wrapper--collapsed) .dialog__navigation[data-v-66c29e13]{flex-direction:column;overflow:hidden auto;height:100%;min-width:200px;margin-inline-end:20px}.dialog__wrapper.dialog__wrapper--collapsed .dialog__navigation[data-v-66c29e13]{flex-direction:row;justify-content:space-between;overflow:auto hidden;width:100%;min-width:100%}.dialog__name[data-v-66c29e13]{font-size:21px;text-align:center;height:fit-content;min-height:var(--default-clickable-area);line-height:var(--default-clickable-area);overflow-wrap:break-word;margin-block:0 12px}.dialog__content[data-v-66c29e13]{flex:1;min-height:0;overflow:auto;padding-inline-end:12px}.dialog__text[data-v-66c29e13]{padding-block-end:6px}.dialog__actions[data-v-66c29e13]{box-sizing:border-box;display:flex;gap:6px;align-content:center;justify-content:end;width:100%;max-width:100%;padding-inline:0 12px;margin-inline:0;margin-block:0}.dialog__actions[data-v-66c29e13]:not(:empty){margin-block:6px 12px}@media only screen and (max-width: 512px){.dialog__name[data-v-66c29e13]{text-align:start;margin-inline-end:var(--default-clickable-area)}}.material-design-icon[data-v-6a8df8b8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.icon-vue[data-v-6a8df8b8]{--icon-size: var(--0ceed50f);display:flex;justify-content:center;align-items:center;min-width:var(--default-clickable-area);min-height:var(--default-clickable-area);opacity:1}.icon-vue--inline[data-v-6a8df8b8]{display:inline-flex;min-width:fit-content;min-height:fit-content;vertical-align:text-bottom}.icon-vue span[data-v-6a8df8b8]{line-height:0}.icon-vue[data-v-6a8df8b8] svg{fill:currentColor;width:var(--icon-size, 20px);height:var(--icon-size, 20px);max-width:var(--icon-size, 20px);max-height:var(--icon-size, 20px)}.icon-vue--directional[data-v-6a8df8b8] svg:dir(rtl){transform:scaleX(-1)}.material-design-icon[data-v-94ff8098]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.loading-icon[data-v-94ff8098]{overflow:hidden}.loading-icon svg[data-v-94ff8098]{animation:rotate var(--animation-duration, .8s) linear infinite}.material-design-icon[data-v-2451d211]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.modal-mask[data-v-2451d211]{--backdrop-color: 0, 0, 0;--icon-size: 20px;--slideshow-duration: var(--d87c3654);position:fixed;z-index:9998;top:0;inset-inline-start:0;display:block;width:100%;height:100%;background-color:rgba(var(--backdrop-color),.5)}.modal-mask--opaque[data-v-2451d211]{background-color:rgba(var(--backdrop-color),.92)}.modal-mask--light[data-v-2451d211]{--backdrop-color: 255, 255, 255}.modal-header[data-v-2451d211]{position:absolute;z-index:10001;top:0;inset-inline:0 0;display:flex!important;align-items:center;justify-content:center;width:100%;height:var(--header-height);overflow:hidden;transition:opacity .25s,visibility .25s}.modal-header__name[data-v-2451d211]{overflow-x:hidden;box-sizing:border-box;width:100%;padding:0 calc(var(--default-clickable-area) * 3) 0 12px;transition:padding ease .1s;white-space:nowrap;text-overflow:ellipsis;font-size:16px;margin-block:0}@media only screen and (min-width: 1024px){.modal-header__name[data-v-2451d211]{padding-inline-start:calc(var(--default-clickable-area) * 3);text-align:center}}.modal-header .icons-menu[data-v-2451d211]{position:absolute;inset-inline-end:0;display:flex;align-items:center;justify-content:flex-end}.modal-header .icons-menu .header-close[data-v-2451d211]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;margin:calc((var(--header-height) - var(--default-clickable-area)) / 2);padding:0}.modal-header .icons-menu .play-pause-icons[data-v-2451d211]{position:relative;width:var(--header-height);height:var(--header-height);margin:0;padding:0;cursor:pointer;border:none;background-color:transparent}.modal-header .icons-menu .play-pause-icons:hover .play-pause-icons__play[data-v-2451d211],.modal-header .icons-menu .play-pause-icons:hover .play-pause-icons__pause[data-v-2451d211],.modal-header .icons-menu .play-pause-icons:focus .play-pause-icons__play[data-v-2451d211],.modal-header .icons-menu .play-pause-icons:focus .play-pause-icons__pause[data-v-2451d211]{opacity:1;border-radius:calc(var(--default-clickable-area) / 2);background-color:#7f7f7f40}.modal-header .icons-menu .play-pause-icons__play[data-v-2451d211],.modal-header .icons-menu .play-pause-icons__pause[data-v-2451d211]{box-sizing:border-box;width:var(--default-clickable-area);height:var(--default-clickable-area);margin:calc((var(--header-height) - var(--default-clickable-area)) / 2);cursor:pointer;opacity:.7}.modal-header .icons-menu[data-v-2451d211] .action-item{margin:calc((var(--header-height) - var(--default-clickable-area)) / 2)}.modal-header .icons-menu[data-v-2451d211] .action-item--single{box-sizing:border-box;width:var(--default-clickable-area);height:var(--default-clickable-area);cursor:pointer;background-position:center;background-size:22px}.modal-header .icons-menu .header-actions[data-v-2451d211] button:focus-visible{box-shadow:none!important;outline:2px solid #fff!important}.modal-header .icons-menu[data-v-2451d211] .action-item__menutoggle{padding:0}.modal-header .icons-menu[data-v-2451d211] .action-item__menutoggle span,.modal-header .icons-menu[data-v-2451d211] .action-item__menutoggle svg{width:var(--icon-size);height:var(--icon-size)}.modal-wrapper[data-v-2451d211]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.modal-wrapper .prev[data-v-2451d211],.modal-wrapper .next[data-v-2451d211]{z-index:10000;height:35vh;min-height:300px;position:absolute;transition:opacity .25s;color:#fff}.modal-wrapper .prev[data-v-2451d211]:focus-visible,.modal-wrapper .next[data-v-2451d211]:focus-visible{box-shadow:0 0 0 2px var(--color-primary-element-text);background-color:var(--color-box-shadow)}.modal-wrapper .prev[data-v-2451d211]{inset-inline-start:2px}.modal-wrapper .next[data-v-2451d211]{inset-inline-end:2px}.modal-wrapper .modal-container[data-v-2451d211]{position:relative;display:flex;padding:0;transition:transform .3s ease;border-radius:var(--border-radius-container, var(--border-radius-rounded));background-color:var(--color-main-background);color:var(--color-main-text);box-shadow:0 0 40px #0003}.modal-wrapper .modal-container__close[data-v-2451d211]{z-index:1;position:absolute;top:4px;inset-inline-end:var(--default-grid-baseline)}.modal-wrapper .modal-container__content[data-v-2451d211]{width:100%;min-height:52px;overflow:auto}.modal-wrapper--small>.modal-container[data-v-2451d211]{width:400px;max-width:90%;max-height:min(90%,100% - 2 * var(--header-height))}.modal-wrapper--normal>.modal-container[data-v-2451d211]{max-width:90%;width:600px;max-height:min(90%,100% - 2 * var(--header-height))}.modal-wrapper--large>.modal-container[data-v-2451d211]{max-width:90%;width:900px;max-height:min(90%,100% - 2 * var(--header-height))}.modal-wrapper--full>.modal-container[data-v-2451d211]{width:100%;height:calc(100% - var(--header-height));position:absolute;top:var(--header-height);border-radius:0}@media only screen and ((max-width: 512px) or (max-height: 400px)){.modal-wrapper .modal-container[data-v-2451d211]{max-width:initial;width:100%;max-height:initial;height:calc(100% - var(--header-height));position:absolute;top:var(--header-height);border-radius:0}}.fade-enter-active[data-v-2451d211],.fade-leave-active[data-v-2451d211]{transition:opacity .25s}.fade-enter[data-v-2451d211],.fade-leave-to[data-v-2451d211]{opacity:0}.fade-visibility-enter[data-v-2451d211],.fade-visibility-leave-to[data-v-2451d211]{visibility:hidden;opacity:0}.modal-in-enter-active[data-v-2451d211],.modal-in-leave-active[data-v-2451d211],.modal-out-enter-active[data-v-2451d211],.modal-out-leave-active[data-v-2451d211]{transition:opacity .25s}.modal-in-enter[data-v-2451d211],.modal-in-leave-to[data-v-2451d211],.modal-out-enter[data-v-2451d211],.modal-out-leave-to[data-v-2451d211]{opacity:0}.modal-in-enter .modal-container[data-v-2451d211],.modal-in-leave-to .modal-container[data-v-2451d211]{transform:scale(.9)}.modal-out-enter .modal-container[data-v-2451d211],.modal-out-leave-to .modal-container[data-v-2451d211]{transform:scale(1.1)}.modal-mask .play-pause-icons .progress-ring[data-v-2451d211]{position:absolute;top:0;inset-inline-start:0;transform:rotate(-90deg)}.modal-mask .play-pause-icons .progress-ring .progress-ring__circle[data-v-2451d211]{transition:.1s stroke-dashoffset;transform-origin:50% 50%;animation:progressring-2451d211 linear var(--slideshow-duration) infinite;stroke-linecap:round;stroke-dashoffset:94.2477796077;stroke-dasharray:94.2477796077}.modal-mask .play-pause-icons--paused .icon-pause[data-v-2451d211]{animation:breath-2451d211 2s cubic-bezier(.4,0,.2,1) infinite}.modal-mask .play-pause-icons--paused .progress-ring__circle[data-v-2451d211]{animation-play-state:paused!important}@keyframes progressring-2451d211{0%{stroke-dashoffset:94.2477796077}to{stroke-dashoffset:0}}@keyframes breath-2451d211{0%{opacity:1}50%{opacity:0}to{opacity:1}}.material-design-icon[data-v-ddba453b]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.action-items[data-v-ddba453b]{display:flex;align-items:center;gap:calc((var(--default-clickable-area) - 16px) / 2 / 2)}.action-item[data-v-ddba453b]{--open-background-color: var(--color-background-hover, $action-background-hover);position:relative;display:inline-block}.action-item.action-item--primary[data-v-ddba453b]{--open-background-color: var(--color-primary-element-hover)}.action-item.action-item--secondary[data-v-ddba453b]{--open-background-color: var(--color-primary-element-light-hover)}.action-item.action-item--error[data-v-ddba453b]{--open-background-color: var(--color-error-hover)}.action-item.action-item--warning[data-v-ddba453b]{--open-background-color: var(--color-warning-hover)}.action-item.action-item--success[data-v-ddba453b]{--open-background-color: var(--color-success-hover)}.action-item.action-item--tertiary-no-background[data-v-ddba453b]{--open-background-color: transparent}.action-item.action-item--open .action-item__menutoggle[data-v-ddba453b]{background-color:var(--open-background-color)}.action-item__menutoggle__icon[data-v-ddba453b]{width:20px;height:20px;object-fit:contain}.v-popper--theme-nc-popover-8.v-popper__popper.action-item__popper .v-popper__wrapper{border-radius:var(--border-radius-large)}.v-popper--theme-nc-popover-8.v-popper__popper.action-item__popper .v-popper__wrapper .v-popper__inner{border-radius:var(--border-radius-large);padding:4px;max-height:calc(100vh - var(--header-height));overflow:auto}._material-design-icon_hdy45_12{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._ncPopover_hdy45_20.v-popper--theme-nc-popover-8 .resize-observer{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}._ncPopover_hdy45_20.v-popper--theme-nc-popover-8 .resize-observer object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper{z-index:100000;top:0;left:0;display:block!important}._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper .v-popper__wrapper{box-shadow:0 1px 10px var(--color-box-shadow);border-radius:var(--border-radius-large)}._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper .v-popper__inner{padding:0;color:var(--color-main-text);border-radius:var(--border-radius-large);overflow:hidden;background:var(--color-main-background)}._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper .v-popper__arrow-container{position:absolute;z-index:1;width:0;height:0;border-style:solid;border-color:transparent;border-width:10px}._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container{bottom:-9px;border-bottom-width:0;border-top-color:var(--color-main-background)}._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:-9px;border-top-width:0;border-bottom-color:var(--color-main-background)}._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container{left:-9px;border-left-width:0;border-right-color:var(--color-main-background)}._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-9px;border-right-width:0;border-left-color:var(--color-main-background)}._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[aria-hidden=true]{visibility:hidden;transition:opacity var(--animation-quick),visibility var(--animation-quick);opacity:0}._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[aria-hidden=false]{visibility:visible;transition:opacity var(--animation-quick);opacity:1}.material-design-icon[data-v-caabd323]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-settings-section[data-v-caabd323]{margin-bottom:80px}.app-settings-section__name[data-v-caabd323]{font-size:1.6em;margin:0;padding:20px 0;font-weight:700;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.material-design-icon[data-v-330b5e3e]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-330b5e3e]:hover,li.action.active[data-v-330b5e3e]{border-radius:6px;padding:0}li.action[data-v-330b5e3e]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-330b5e3e]{pointer-events:none;opacity:.5}.action--disabled[data-v-330b5e3e]:hover,.action--disabled[data-v-330b5e3e]:focus{cursor:default;opacity:.5}.action--disabled[data-v-330b5e3e] *{opacity:1!important}.action-button[data-v-330b5e3e]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-button>span[data-v-330b5e3e]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-330b5e3e]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-button[data-v-330b5e3e] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-button[data-v-330b5e3e] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-button__longtext-wrapper[data-v-330b5e3e],.action-button__longtext[data-v-330b5e3e]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-button__longtext[data-v-330b5e3e]{cursor:pointer;white-space:pre-wrap!important}.action-button__name[data-v-330b5e3e]{font-weight:700;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-button__description[data-v-330b5e3e]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-button__menu-icon[data-v-330b5e3e],.action-button__pressed-icon[data-v-330b5e3e]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action-button[data-v-330b5e3e] *{cursor:pointer}.material-design-icon[data-v-5a43cff9]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.icon-vue[data-v-5a43cff9]{display:flex;justify-content:center;align-items:center;min-width:var(--default-clickable-area);min-height:var(--default-clickable-area);opacity:1}.icon-vue.icon-vue--inline[data-v-5a43cff9]{display:inline-flex!important;min-width:fit-content;min-height:fit-content;vertical-align:text-bottom}.icon-vue span[data-v-5a43cff9]{line-height:0}.icon-vue[data-v-5a43cff9] svg{fill:currentColor;width:var(--0c3ef411);height:var(--0c3ef411);max-width:var(--0c3ef411);max-height:var(--0c3ef411)}.icon-vue--directional[data-v-5a43cff9] svg:dir(rtl){transform:scaleX(-1)}.material-design-icon[data-v-f57c2142]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.nc-button-group-base>div[data-v-f57c2142]{text-align:center;color:var(--color-text-maxcontrast)}.nc-button-group-base ul.nc-button-group-content[data-v-f57c2142]{display:flex;gap:4px;justify-content:space-between}.nc-button-group-base ul.nc-button-group-content li[data-v-f57c2142-s]{flex:1 1}.nc-button-group-base ul.nc-button-group-content[data-v-f57c2142] .action-button{padding:0!important;width:100%;display:flex;justify-content:center}.nc-button-group-base ul.nc-button-group-content[data-v-f57c2142] .action-button.action-button--active{background-color:var(--color-primary-element);border-radius:var(--border-radius-element);color:var(--color-primary-element-text)}.nc-button-group-base ul.nc-button-group-content[data-v-f57c2142] .action-button.action-button--active:hover,.nc-button-group-base ul.nc-button-group-content[data-v-f57c2142] .action-button.action-button--active:focus,.nc-button-group-base ul.nc-button-group-content[data-v-f57c2142] .action-button.action-button--active:focus-within{background-color:var(--color-primary-element-hover)}.nc-button-group-base ul.nc-button-group-content[data-v-f57c2142] .action-button .action-button__pressed-icon{display:none}.material-design-icon[data-v-1009e96c]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-caption[data-v-1009e96c]{color:var(--color-text-maxcontrast);line-height:var(--default-clickable-area);white-space:nowrap;text-overflow:ellipsis;box-shadow:none!important;-webkit-user-select:none;user-select:none;pointer-events:none;margin-inline-start:12px;padding-inline-end:14px;height:var(--default-clickable-area);display:flex;align-items:center}.material-design-icon[data-v-6099342c]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-6099342c]:hover,li.action.active[data-v-6099342c]{border-radius:6px;padding:0}li.action[data-v-6099342c]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-6099342c]{pointer-events:none;opacity:.5}.action--disabled[data-v-6099342c]:hover,.action--disabled[data-v-6099342c]:focus{cursor:default;opacity:.5}.action--disabled[data-v-6099342c] *{opacity:1!important}.action-checkbox[data-v-6099342c]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;line-height:var(--default-clickable-area)}.action-checkbox__checkbox[data-v-6099342c]{position:absolute;inset-inline-start:0!important;z-index:-1;opacity:0}.action-checkbox__label[data-v-6099342c]{display:flex;align-items:center;width:100%;padding:0!important;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)!important}.action-checkbox__label[data-v-6099342c]:before{margin-block:0!important;margin-inline:calc((var(--default-clickable-area) - 14px) / 2)!important}.action-checkbox--disabled[data-v-6099342c],.action-checkbox--disabled .action-checkbox__label[data-v-6099342c]{cursor:pointer}.material-design-icon[data-v-0fc02b30]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}button[data-v-0fc02b30]:not(.button-vue),input[data-v-0fc02b30]:not([type=range]),textarea[data-v-0fc02b30]{margin:0;padding:7px 6px;cursor:text;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius-element);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-0fc02b30]:not(.button-vue):not(:disabled):not(.primary):hover,button[data-v-0fc02b30]:not(.button-vue):not(:disabled):not(.primary):focus,button:not(.button-vue):not(:disabled):not(.primary).active[data-v-0fc02b30],input[data-v-0fc02b30]:not([type=range]):not(:disabled):not(.primary):hover,input[data-v-0fc02b30]:not([type=range]):not(:disabled):not(.primary):focus,input:not([type=range]):not(:disabled):not(.primary).active[data-v-0fc02b30],textarea[data-v-0fc02b30]:not(:disabled):not(.primary):hover,textarea[data-v-0fc02b30]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-0fc02b30]{border-color:var(--color-primary-element);outline:none}button[data-v-0fc02b30]:not(.button-vue):not(:disabled):not(.primary):active,input[data-v-0fc02b30]:not([type=range]):not(:disabled):not(.primary):active,textarea[data-v-0fc02b30]:not(:disabled):not(.primary):active{color:var(--color-main-text);outline:none;background-color:var(--color-main-background)}button[data-v-0fc02b30]:not(.button-vue):disabled,input[data-v-0fc02b30]:not([type=range]):disabled,textarea[data-v-0fc02b30]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-0fc02b30]:not(.button-vue):required,input[data-v-0fc02b30]:not([type=range]):required,textarea[data-v-0fc02b30]:required{box-shadow:none}button[data-v-0fc02b30]:not(.button-vue):invalid,input[data-v-0fc02b30]:not([type=range]):invalid,textarea[data-v-0fc02b30]:invalid{border-color:var(--color-border-error, var(--color-error));box-shadow:none!important}button:not(.button-vue).primary[data-v-0fc02b30],input:not([type=range]).primary[data-v-0fc02b30],textarea.primary[data-v-0fc02b30]{cursor:pointer;color:var(--color-primary-element-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button:not(.button-vue).primary[data-v-0fc02b30]:not(:disabled):hover,button:not(.button-vue).primary[data-v-0fc02b30]:not(:disabled):focus,button:not(.button-vue).primary[data-v-0fc02b30]:not(:disabled):active,input:not([type=range]).primary[data-v-0fc02b30]:not(:disabled):hover,input:not([type=range]).primary[data-v-0fc02b30]:not(:disabled):focus,input:not([type=range]).primary[data-v-0fc02b30]:not(:disabled):active,textarea.primary[data-v-0fc02b30]:not(:disabled):hover,textarea.primary[data-v-0fc02b30]:not(:disabled):focus,textarea.primary[data-v-0fc02b30]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button:not(.button-vue).primary[data-v-0fc02b30]:not(:disabled):active,input:not([type=range]).primary[data-v-0fc02b30]:not(:disabled):active,textarea.primary[data-v-0fc02b30]:not(:disabled):active{color:var(--color-primary-element-text-dark)}button:not(.button-vue).primary[data-v-0fc02b30]:disabled,input:not([type=range]).primary[data-v-0fc02b30]:disabled,textarea.primary[data-v-0fc02b30]:disabled{cursor:default;color:var(--color-primary-element-text-dark);background-color:var(--color-primary-element)}li.action[data-v-0fc02b30]:hover,li.action.active[data-v-0fc02b30]{border-radius:6px;padding:0}li.action[data-v-0fc02b30]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-0fc02b30]{pointer-events:none;opacity:.5}.action--disabled[data-v-0fc02b30]:hover,.action--disabled[data-v-0fc02b30]:focus{cursor:default;opacity:.5}.action--disabled[data-v-0fc02b30] *{opacity:1!important}.action-input[data-v-0fc02b30]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400}.action-input__icon-wrapper[data-v-0fc02b30]{display:flex;align-self:center;align-items:center;justify-content:center}.action-input__icon-wrapper[data-v-0fc02b30] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-input__icon-wrapper[data-v-0fc02b30] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-input>span[data-v-0fc02b30]{cursor:pointer;white-space:nowrap}.action-input__icon[data-v-0fc02b30]{min-width:0;min-height:0;padding:calc(var(--default-clickable-area) / 2) 0 calc(var(--default-clickable-area) / 2) var(--default-clickable-area);background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px}.action-input__form[data-v-0fc02b30]{display:flex;align-items:center;flex:1 1 auto;margin:4px 0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.action-input__container[data-v-0fc02b30]{position:relative;width:100%}.action-input__input-container[data-v-0fc02b30]{display:flex}.action-input__input-container .colorpicker__trigger[data-v-0fc02b30],.action-input__input-container .colorpicker__preview[data-v-0fc02b30]{width:100%}.action-input__input-container .colorpicker__preview[data-v-0fc02b30]{width:100%;height:36px;border-radius:var(--border-radius-element);border:2px solid var(--color-border-maxcontrast);box-shadow:none!important}.action-input__text-label[data-v-0fc02b30]{padding:4px 0;display:block}.action-input__text-label--hidden[data-v-0fc02b30]{position:absolute;inset-inline-start:0;width:1px;height:1px;overflow:hidden;z-index:-1;opacity:0}.action-input__datetimepicker[data-v-0fc02b30]{width:100%}.action-input__datetimepicker[data-v-0fc02b30] .mx-input{margin:0}.action-input__multi[data-v-0fc02b30]{width:100%}li:last-child>.action-input[data-v-0fc02b30]{padding-bottom:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}li:first-child>.action-input[data-v-0fc02b30]:not(.action-input--visible-label){padding-top:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}.material-design-icon[data-v-b97e1f7a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.native-datetime-picker[data-v-b97e1f7a]{display:flex;flex-direction:column}.native-datetime-picker .native-datetime-picker__label[data-v-b97e1f7a]{margin-block-end:2px}.native-datetime-picker .native-datetime-picker__input[data-v-b97e1f7a]{--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));width:100%;flex:0 0 auto;margin:0;padding-inline-start:calc(var(--border-radius-element) + var(--input-border-width-offset));padding-inline-end:calc(var(--default-grid-baseline) + var(--input-border-width-offset));border:var(--border-width-input, 2px) solid var(--color-border-maxcontrast)}.native-datetime-picker .native-datetime-picker__input[data-v-b97e1f7a]:active:not([disabled]),.native-datetime-picker .native-datetime-picker__input[data-v-b97e1f7a]:hover:not([disabled]),.native-datetime-picker .native-datetime-picker__input[data-v-b97e1f7a]:focus:not([disabled]),.native-datetime-picker .native-datetime-picker__input[data-v-b97e1f7a]:focus-within:not([disabled]){border-color:var(--color-main-text);border-width:var(--border-width-input-focused, 2px);box-shadow:0 0 0 2px var(--color-main-background)!important;--input-border-width-offset: 0px}[data-theme-light] .native-datetime-picker__input[data-v-b97e1f7a],[data-themes*=light] .native-datetime-picker__input[data-v-b97e1f7a]{color-scheme:light}[data-theme-dark] .native-datetime-picker__input[data-v-b97e1f7a],[data-themes*=dark] .native-datetime-picker__input[data-v-b97e1f7a]{color-scheme:dark}@media (prefers-color-scheme: light){[data-theme-default] .native-datetime-picker__input[data-v-b97e1f7a],[data-themes*=default] .native-datetime-picker__input[data-v-b97e1f7a]{color-scheme:light}}@media (prefers-color-scheme: dark){[data-theme-default] .native-datetime-picker__input[data-v-b97e1f7a],[data-themes*=default] .native-datetime-picker__input[data-v-b97e1f7a]{color-scheme:dark}}.material-design-icon[data-v-6df84a8a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}[data-v-6df84a8a] .password-field__input--secure-text{-webkit-text-security:disc}.material-design-icon[data-v-8e3b7bdd]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.input-field[data-v-8e3b7bdd]{--input-border-color: var(--color-border-maxcontrast);--input-border-radius: var(--border-radius-element);--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));--input-padding-start: var(--border-radius-element);--input-padding-end: var(--border-radius-element);position:relative;width:100%;margin-block-start:6px}.input-field--disabled[data-v-8e3b7bdd]{opacity:.4;filter:saturate(.4)}.input-field--label-outside[data-v-8e3b7bdd]{margin-block-start:0}.input-field--leading-icon[data-v-8e3b7bdd]{--input-padding-start: calc(var(--default-clickable-area) - var(--default-grid-baseline))}.input-field--trailing-icon[data-v-8e3b7bdd]{--input-padding-end: calc(var(--default-clickable-area) - var(--default-grid-baseline))}.input-field--pill[data-v-8e3b7bdd]{--input-border-radius: var(--border-radius-pill)}.input-field__main-wrapper[data-v-8e3b7bdd]{height:var(--default-clickable-area);padding:var(--border-width-input, 2px);position:relative}.input-field__main-wrapper[data-v-8e3b7bdd]:not(:has([disabled])):has(input:focus),.input-field__main-wrapper[data-v-8e3b7bdd]:not(:has([disabled])):has(input:active){padding:0}.input-field__input[data-v-8e3b7bdd]{background-color:var(--color-main-background);color:var(--color-main-text);border:none;border-radius:var(--input-border-radius);box-shadow:0 -1px var(--input-border-color),0 0 0 1px color-mix(in srgb,var(--input-border-color),65% transparent);cursor:pointer;-webkit-appearance:textfield!important;-moz-appearance:textfield!important;appearance:textfield!important;font-size:var(--default-font-size);text-overflow:ellipsis;height:100%!important;min-height:unset;width:100%;padding-block:var(--input-border-width-offset);padding-inline:calc(var(--input-padding-start) + var(--input-border-width-offset)) calc(var(--input-padding-end) + var(--input-border-width-offset))}.input-field__input[data-v-8e3b7bdd]::placeholder{color:var(--color-text-maxcontrast)}.input-field__input[data-v-8e3b7bdd]::-webkit-search-cancel-button{display:none}.input-field__input[data-v-8e3b7bdd]::-webkit-search-decoration,.input-field__input[data-v-8e3b7bdd]::-webkit-search-results-button,.input-field__input[data-v-8e3b7bdd]::-webkit-search-results-decoration,.input-field__input[data-v-8e3b7bdd]::-ms-clear{display:none}.input-field__input[data-v-8e3b7bdd]:hover:not([disabled]){box-shadow:0 0 0 1px var(--input-border-color)}.input-field__input[data-v-8e3b7bdd]:active:not([disabled]),.input-field__input[data-v-8e3b7bdd]:focus:not([disabled]){--input-border-color: var(--color-main-text);--input-border-width-offset: 0px;border:var(--border-width-input-focused, 2px) solid var(--input-border-color);box-shadow:0 0 0 2px var(--color-main-background)!important}.input-field__input:focus+.input-field__label[data-v-8e3b7bdd],.input-field__input:hover:not(:placeholder-shown)+.input-field__label[data-v-8e3b7bdd]{color:var(--color-main-text)}.input-field__input[data-v-8e3b7bdd]:focus{cursor:text}.input-field__input[data-v-8e3b7bdd]:disabled{cursor:default}.input-field__input[data-v-8e3b7bdd]:focus-visible{box-shadow:unset!important}.input-field:not(.input-field--label-outside) .input-field__input[data-v-8e3b7bdd]:not(:focus)::placeholder{opacity:0}.input-field__label[data-v-8e3b7bdd]{--input-label-font-size: var(--default-font-size);font-size:var(--input-label-font-size);position:absolute;margin-inline:var(--input-padding-start) var(--input-padding-end);max-width:fit-content;inset-block-start:calc((var(--default-clickable-area) - 1lh) / 2);inset-inline:var(--border-width-input-focused, 2px);color:var(--color-text-maxcontrast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick),background-color var(--animation-quick) var(--animation-slow)}.input-field__input:focus+.input-field__label[data-v-8e3b7bdd],.input-field__input:not(:placeholder-shown)+.input-field__label[data-v-8e3b7bdd]{--input-label-font-size: 13px;line-height:1.5;inset-block-start:calc(-1.5 * var(--input-label-font-size) / 2);font-weight:500;border-radius:var(--default-grid-baseline) var(--default-grid-baseline) 0 0;background-color:var(--color-main-background);padding-inline:var(--default-grid-baseline);margin-inline:calc(var(--input-padding-start) - var(--default-grid-baseline)) calc(var(--input-padding-end) - var(--default-grid-baseline));transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick)}.input-field__icon[data-v-8e3b7bdd]{position:absolute;height:var(--default-clickable-area);width:var(--default-clickable-area);display:flex;align-items:center;justify-content:center;opacity:.7;inset-block-end:0}.input-field__icon--leading[data-v-8e3b7bdd]{inset-inline-start:0px}.input-field__icon--trailing[data-v-8e3b7bdd]{inset-inline-end:0px}.input-field__trailing-button[data-v-8e3b7bdd]{--button-size: calc(var(--default-clickable-area) - 2 * var(--border-width-input-focused, 2px)) !important;--button-radius: calc(var(--input-border-radius) - var(--border-width-input-focused, 2px))}.input-field__trailing-button.button-vue[data-v-8e3b7bdd]{position:absolute;top:var(--border-width-input-focused, 2px);inset-inline-end:var(--border-width-input-focused, 2px)}.input-field__trailing-button.button-vue[data-v-8e3b7bdd]:focus-visible{box-shadow:none!important}.input-field__helper-text-message[data-v-8e3b7bdd]{padding-block:4px;padding-inline:var(--border-radius-element);display:flex;align-items:center;color:var(--color-text-maxcontrast)}.input-field__helper-text-message__icon[data-v-8e3b7bdd]{margin-inline-end:8px}.input-field--error .input-field__helper-text-message[data-v-8e3b7bdd],.input-field--error .input-field__icon--trailing[data-v-8e3b7bdd]{color:var(--color-text-error, var(--color-error))}.input-field--error .input-field__input[data-v-8e3b7bdd],.input-field__input[data-v-8e3b7bdd]:user-invalid{--input-border-color: var(--color-border-error, var(--color-error)) !important}.input-field--error .input-field__input[data-v-8e3b7bdd]:focus-visible,.input-field__input[data-v-8e3b7bdd]:user-invalid:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.input-field--success .input-field__input[data-v-8e3b7bdd]{--input-border-color: var(--color-border-success, var(--color-success)) !important}.input-field--success .input-field__input[data-v-8e3b7bdd]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.input-field--success .input-field__helper-text-message__icon[data-v-8e3b7bdd]{color:var(--color-border-success, var(--color-success))}.input-field--legacy .input-field__input[data-v-8e3b7bdd]{box-shadow:0 0 0 1px var(--input-border-color) inset}.input-field--legacy .input-field__main-wrapper[data-v-8e3b7bdd]:hover:not(:has([disabled])){padding:0}.input-field--legacy .input-field__main-wrapper:hover:not(:has([disabled])) .input-field__input[data-v-8e3b7bdd]{--input-border-color: var(--color-main-text);--input-border-width-offset: 0px;border:var(--border-width-input-focused, 2px) solid var(--input-border-color);box-shadow:0 0 0 2px var(--color-main-background)!important}.material-design-icon[data-v-1057e2a8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue[data-v-1057e2a8]{--button-size: var(--default-clickable-area);--button-inner-size: calc(var(--button-size) - 4px);--button-radius: var(--border-radius-element);--button-padding-default: calc(var(--default-grid-baseline) + var(--button-radius));--button-padding: var(--default-grid-baseline) var(--button-padding-default);color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light);border:1px solid var(--color-primary-element-light-hover);border-bottom-width:2px;border-radius:var(--button-radius);box-sizing:border-box;position:relative;width:fit-content;overflow:hidden;padding-block:1px 0;padding-inline:var(--button-padding);min-height:var(--button-size);min-width:var(--button-size);display:flex;align-items:center;justify-content:center;transition-property:color,border-color,background-color;transition-duration:.1s;transition-timing-function:linear;cursor:pointer;font-size:var(--default-font-size);font-weight:700}.button-vue--size-small[data-v-1057e2a8]{--button-size: var(--clickable-area-small);--button-radius: var(--border-radius-small)}.button-vue--size-large[data-v-1057e2a8]{--button-size: var(--clickable-area-large)}.button-vue[data-v-1057e2a8] *{cursor:pointer}.button-vue[data-v-1057e2a8]:focus{outline:none}.button-vue[data-v-1057e2a8]:disabled{filter:saturate(.7);opacity:.5;cursor:default}.button-vue[data-v-1057e2a8]:disabled *{cursor:default}.button-vue[data-v-1057e2a8]:hover:not(:disabled){background-color:var(--color-primary-element-light-hover)}.button-vue[data-v-1057e2a8]:active{background-color:var(--color-primary-element-light)}.button-vue__wrapper[data-v-1057e2a8]{display:inline-flex;align-items:center;justify-content:center;width:100%}.button-vue--end .button-vue__wrapper[data-v-1057e2a8]{justify-content:end}.button-vue--start .button-vue__wrapper[data-v-1057e2a8]{justify-content:start}.button-vue--reverse .button-vue__wrapper[data-v-1057e2a8]{flex-direction:row-reverse}.button-vue--reverse[data-v-1057e2a8]{--button-padding: var(--button-padding-default) var(--default-grid-baseline)}.button-vue__icon[data-v-1057e2a8]{--default-clickable-area: var(--button-inner-size);height:var(--button-inner-size);width:var(--button-inner-size);min-height:var(--button-inner-size);min-width:var(--button-inner-size);display:flex;justify-content:center;align-items:center}.button-vue__icon[data-v-1057e2a8]:empty{display:none}.button-vue--size-small .button-vue__icon[data-v-1057e2a8]>*{max-height:16px;max-width:16px}.button-vue--size-small .button-vue__icon[data-v-1057e2a8] svg{height:16px;width:16px}.button-vue__text[data-v-1057e2a8]{font-weight:700;margin-bottom:1px;padding:2px 0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.button-vue__text[data-v-1057e2a8]:empty{display:none}.button-vue[data-v-1057e2a8]:has(.button-vue__text:empty){--button-padding: var(--button-radius);line-height:1;width:var(--button-size)!important}.button-vue[data-v-1057e2a8]:has(.button-vue__icon:empty){--button-padding: var(--button-padding-default)}.button-vue:has(.button-vue__icon:empty) .button-vue__text[data-v-1057e2a8]{padding-inline:var(--default-grid-baseline)}.button-vue--wide[data-v-1057e2a8]{width:100%}.button-vue[data-v-1057e2a8]:focus-visible{outline:2px solid var(--color-main-text)!important;box-shadow:0 0 0 4px var(--color-main-background)!important}.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-1057e2a8]{outline:2px solid var(--color-primary-element-text);border-radius:var(--border-radius-element);background-color:transparent}.button-vue--primary[data-v-1057e2a8]{background-color:var(--color-primary-element);border-color:var(--color-primary-element-hover);color:var(--color-primary-element-text)}.button-vue--primary[data-v-1057e2a8]:hover:not(:disabled){background-color:var(--color-primary-element-hover)}.button-vue--primary[data-v-1057e2a8]:active{background-color:var(--color-primary-element)}.button-vue--secondary[data-v-1057e2a8]{background-color:var(--color-primary-element-light);border-color:var(--color-primary-element-light-hover);color:var(--color-primary-element-light-text)}.button-vue--secondary[data-v-1057e2a8]:hover:not(:disabled){color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light-hover)}.button-vue--tertiary[data-v-1057e2a8]{background-color:transparent;border-color:transparent;color:var(--color-main-text)}.button-vue--tertiary[data-v-1057e2a8]:hover:not(:disabled){background-color:var(--color-background-hover)}.button-vue--tertiary-no-background[data-v-1057e2a8]:hover:not(:disabled){background-color:transparent}.button-vue--tertiary-on-primary[data-v-1057e2a8]{color:var(--color-primary-element-text)}.button-vue--tertiary-on-primary[data-v-1057e2a8]:hover:not(:disabled){background-color:transparent}.button-vue--success[data-v-1057e2a8]{border-color:var(--color-success-hover);background-color:var(--color-success);color:var(--color-success-text)}.button-vue--success[data-v-1057e2a8]:hover:not(:disabled){background-color:var(--color-success-hover)}.button-vue--success[data-v-1057e2a8]:active{background-color:var(--color-success)}.button-vue--warning[data-v-1057e2a8]{border-color:var(--color-warning-hover);background-color:var(--color-warning);color:var(--color-warning-text)}.button-vue--warning[data-v-1057e2a8]:hover:not(:disabled){background-color:var(--color-warning-hover)}.button-vue--warning[data-v-1057e2a8]:active{background-color:var(--color-warning)}.button-vue--error[data-v-1057e2a8]{border-color:var(--color-error-hover);background-color:var(--color-error);color:var(--color-error-text)}.button-vue--error[data-v-1057e2a8]:hover:not(:disabled){background-color:var(--color-error-hover)}.button-vue--error[data-v-1057e2a8]:active{background-color:var(--color-error)}.button-vue--legacy[data-v-1057e2a8]{--button-inner-size: var(--button-size);border:none;padding-block:0}.button-vue--legacy.button-vue--error[data-v-1057e2a8],.button-vue--legacy.button-vue--success[data-v-1057e2a8],.button-vue--legacy.button-vue--warning[data-v-1057e2a8]{color:#fff}.material-design-icon[data-v-9e538838]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-9e538838]:hover,li.action.active[data-v-9e538838]{border-radius:6px;padding:0}li.action[data-v-9e538838]:hover{background-color:var(--color-background-hover)}.action-link[data-v-9e538838]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-link>span[data-v-9e538838]{cursor:pointer;white-space:nowrap}.action-link__icon[data-v-9e538838]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-link[data-v-9e538838] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-link[data-v-9e538838] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-link__longtext-wrapper[data-v-9e538838],.action-link__longtext[data-v-9e538838]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-link__longtext[data-v-9e538838]{cursor:pointer;white-space:pre-wrap!important}.action-link__name[data-v-9e538838]{font-weight:700;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-link__description[data-v-9e538838]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-link__menu-icon[data-v-9e538838]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.material-design-icon[data-v-9e878692]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-9e878692]:hover,li.action.active[data-v-9e878692]{border-radius:6px;padding:0}li.action[data-v-9e878692]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-9e878692]{pointer-events:none;opacity:.5}.action--disabled[data-v-9e878692]:hover,.action--disabled[data-v-9e878692]:focus{cursor:default;opacity:.5}.action--disabled[data-v-9e878692] *{opacity:1!important}.action-radio[data-v-9e878692]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;line-height:var(--default-clickable-area)}.action-radio__radio[data-v-9e878692]{position:absolute;inset-inline-start:0!important;z-index:-1;opacity:0}.action-radio__label[data-v-9e878692]{display:flex;align-items:center;width:100%;padding:0!important;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)!important}.action-radio__label[data-v-9e878692]:before{margin:calc((var(--default-clickable-area) - 14px) / 2)!important}.action-radio--disabled[data-v-9e878692],.action-radio--disabled .action-radio__label[data-v-9e878692]{cursor:pointer}.material-design-icon[data-v-87267750]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-87267750]:hover,li.action.active[data-v-87267750]{border-radius:6px;padding:0}li.action[data-v-87267750]:hover{background-color:var(--color-background-hover)}.action-router[data-v-87267750]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-router>span[data-v-87267750]{cursor:pointer;white-space:nowrap}.action-router__icon[data-v-87267750]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-router[data-v-87267750] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-router[data-v-87267750] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-router__longtext-wrapper[data-v-87267750],.action-router__longtext[data-v-87267750]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-router__longtext[data-v-87267750]{cursor:pointer;white-space:pre-wrap!important}.action-router__name[data-v-87267750]{font-weight:700;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-router__description[data-v-87267750]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-router__menu-icon[data-v-87267750]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action--disabled[data-v-87267750]{pointer-events:none;opacity:.5}.action--disabled[data-v-87267750]:hover,.action--disabled[data-v-87267750]:focus{cursor:default;opacity:.5}.action--disabled[data-v-87267750] *{opacity:1!important}.material-design-icon[data-v-cc138260]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.action-items[data-v-cc138260]{display:flex;align-items:center;gap:calc((var(--default-clickable-area) - 16px) / 2 / 2)}.action-item[data-v-cc138260]{--open-background-color: var(--color-background-hover, $action-background-hover);position:relative;display:inline-block}.action-item.action-item--primary[data-v-cc138260]{--open-background-color: var(--color-primary-element-hover)}.action-item.action-item--secondary[data-v-cc138260]{--open-background-color: var(--color-primary-element-light-hover)}.action-item.action-item--error[data-v-cc138260]{--open-background-color: var(--color-error-hover)}.action-item.action-item--warning[data-v-cc138260]{--open-background-color: var(--color-warning-hover)}.action-item.action-item--success[data-v-cc138260]{--open-background-color: var(--color-success-hover)}.action-item.action-item--tertiary-no-background[data-v-cc138260]{--open-background-color: transparent}.action-item.action-item--open .action-item__menutoggle[data-v-cc138260]{background-color:var(--open-background-color)}.action-item__menutoggle__icon[data-v-cc138260]{width:20px;height:20px;object-fit:contain}.v-popper--theme-nc-popover-9.v-popper__popper.action-item__popper .v-popper__wrapper{border-radius:var(--border-radius-element)}.v-popper--theme-nc-popover-9.v-popper__popper.action-item__popper .v-popper__wrapper .v-popper__inner{border-radius:var(--border-radius-element);padding:4px;max-height:calc(100vh - var(--header-height));overflow:auto}._material-design-icon_wpltc_12{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._ncPopover_wpltc_20.v-popper--theme-nc-popover-9,._ncPopover_wpltc_20.v-popper--theme-nc-popover-9 *{box-sizing:border-box}._ncPopover_wpltc_20.v-popper--theme-nc-popover-9 .resize-observer{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}._ncPopover_wpltc_20.v-popper--theme-nc-popover-9 .resize-observer object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}._ncPopover_wpltc_20.v-popper--theme-nc-popover-9.v-popper__popper{z-index:100000;top:0;left:0;display:block!important}._ncPopover_wpltc_20.v-popper--theme-nc-popover-9.v-popper__popper .v-popper__wrapper{box-shadow:0 1px 10px var(--color-box-shadow);border-radius:var(--border-radius-element)}._ncPopover_wpltc_20.v-popper--theme-nc-popover-9.v-popper__popper .v-popper__inner{padding:0;color:var(--color-main-text);border-radius:var(--border-radius-element);overflow:hidden;background:var(--color-main-background)}._ncPopover_wpltc_20.v-popper--theme-nc-popover-9.v-popper__popper .v-popper__arrow-container{position:absolute;z-index:1;width:0;height:0;border-style:solid;border-color:transparent;border-width:10px}._ncPopover_wpltc_20.v-popper--theme-nc-popover-9.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container{bottom:-9px;border-bottom-width:0;border-top-color:var(--color-main-background)}._ncPopover_wpltc_20.v-popper--theme-nc-popover-9.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:-9px;border-top-width:0;border-bottom-color:var(--color-main-background)}._ncPopover_wpltc_20.v-popper--theme-nc-popover-9.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container{left:-9px;border-left-width:0;border-right-color:var(--color-main-background)}._ncPopover_wpltc_20.v-popper--theme-nc-popover-9.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-9px;border-right-width:0;border-left-color:var(--color-main-background)}._ncPopover_wpltc_20.v-popper--theme-nc-popover-9.v-popper__popper[aria-hidden=true]{visibility:hidden;transition:opacity var(--animation-quick),visibility var(--animation-quick);opacity:0}._ncPopover_wpltc_20.v-popper--theme-nc-popover-9.v-popper__popper[aria-hidden=false]{visibility:visible;transition:opacity var(--animation-quick);opacity:1}.material-design-icon[data-v-3e2324b7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.action-separator[data-v-3e2324b7]{height:0;margin:5px 10px 5px 15px;border-bottom:1px solid var(--color-border-dark);cursor:default}.material-design-icon[data-v-fa684b48]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-fa684b48]:hover,li.action.active[data-v-fa684b48]{border-radius:6px;padding:0}li.action[data-v-fa684b48]:hover{background-color:var(--color-background-hover)}.action-text[data-v-fa684b48]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-text>span[data-v-fa684b48]{cursor:pointer;white-space:nowrap}.action-text__icon[data-v-fa684b48]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-text[data-v-fa684b48] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-text[data-v-fa684b48] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-text__longtext-wrapper[data-v-fa684b48],.action-text__longtext[data-v-fa684b48]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-text__longtext[data-v-fa684b48]{cursor:pointer;white-space:pre-wrap!important}.action-text__name[data-v-fa684b48]{font-weight:700;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-text__description[data-v-fa684b48]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-text__menu-icon[data-v-fa684b48]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action--disabled[data-v-fa684b48]{pointer-events:none;opacity:.5}.action--disabled[data-v-fa684b48]:hover,.action--disabled[data-v-fa684b48]:focus{cursor:default;opacity:.5}.action--disabled[data-v-fa684b48] *{opacity:1!important}.action-text[data-v-fa684b48],.action-text span[data-v-fa684b48]{cursor:default}.material-design-icon[data-v-c537247a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}button[data-v-c537247a]:not(.button-vue),input[data-v-c537247a]:not([type=range]),textarea[data-v-c537247a]{margin:0;padding:7px 6px;cursor:text;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius-element);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-c537247a]:not(.button-vue):not(:disabled):not(.primary):hover,button[data-v-c537247a]:not(.button-vue):not(:disabled):not(.primary):focus,button:not(.button-vue):not(:disabled):not(.primary).active[data-v-c537247a],input[data-v-c537247a]:not([type=range]):not(:disabled):not(.primary):hover,input[data-v-c537247a]:not([type=range]):not(:disabled):not(.primary):focus,input:not([type=range]):not(:disabled):not(.primary).active[data-v-c537247a],textarea[data-v-c537247a]:not(:disabled):not(.primary):hover,textarea[data-v-c537247a]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-c537247a]{border-color:var(--color-primary-element);outline:none}button[data-v-c537247a]:not(.button-vue):not(:disabled):not(.primary):active,input[data-v-c537247a]:not([type=range]):not(:disabled):not(.primary):active,textarea[data-v-c537247a]:not(:disabled):not(.primary):active{color:var(--color-main-text);outline:none;background-color:var(--color-main-background)}button[data-v-c537247a]:not(.button-vue):disabled,input[data-v-c537247a]:not([type=range]):disabled,textarea[data-v-c537247a]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-c537247a]:not(.button-vue):required,input[data-v-c537247a]:not([type=range]):required,textarea[data-v-c537247a]:required{box-shadow:none}button[data-v-c537247a]:not(.button-vue):invalid,input[data-v-c537247a]:not([type=range]):invalid,textarea[data-v-c537247a]:invalid{border-color:var(--color-border-error, var(--color-error));box-shadow:none!important}button:not(.button-vue).primary[data-v-c537247a],input:not([type=range]).primary[data-v-c537247a],textarea.primary[data-v-c537247a]{cursor:pointer;color:var(--color-primary-element-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button:not(.button-vue).primary[data-v-c537247a]:not(:disabled):hover,button:not(.button-vue).primary[data-v-c537247a]:not(:disabled):focus,button:not(.button-vue).primary[data-v-c537247a]:not(:disabled):active,input:not([type=range]).primary[data-v-c537247a]:not(:disabled):hover,input:not([type=range]).primary[data-v-c537247a]:not(:disabled):focus,input:not([type=range]).primary[data-v-c537247a]:not(:disabled):active,textarea.primary[data-v-c537247a]:not(:disabled):hover,textarea.primary[data-v-c537247a]:not(:disabled):focus,textarea.primary[data-v-c537247a]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button:not(.button-vue).primary[data-v-c537247a]:not(:disabled):active,input:not([type=range]).primary[data-v-c537247a]:not(:disabled):active,textarea.primary[data-v-c537247a]:not(:disabled):active{color:var(--color-primary-element-text-dark)}button:not(.button-vue).primary[data-v-c537247a]:disabled,input:not([type=range]).primary[data-v-c537247a]:disabled,textarea.primary[data-v-c537247a]:disabled{cursor:default;color:var(--color-primary-element-text-dark);background-color:var(--color-primary-element)}li.action[data-v-c537247a]:hover,li.action.active[data-v-c537247a]{border-radius:6px;padding:0}li.action[data-v-c537247a]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-c537247a]{pointer-events:none;opacity:.5}.action--disabled[data-v-c537247a]:hover,.action--disabled[data-v-c537247a]:focus{cursor:default;opacity:.5}.action--disabled[data-v-c537247a] *{opacity:1!important}.action-text-editable[data-v-c537247a]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;line-height:var(--default-clickable-area)}.action-text-editable>span[data-v-c537247a]{cursor:pointer;white-space:nowrap}.action-text-editable__icon[data-v-c537247a]{min-width:0;min-height:0;padding:calc(var(--default-clickable-area) / 2) 0 calc(var(--default-clickable-area) / 2) var(--default-clickable-area);background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px}.action-text-editable[data-v-c537247a] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-text-editable[data-v-c537247a] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-text-editable__form[data-v-c537247a]{display:flex;flex:1 1 auto;flex-direction:column;position:relative;margin:4px 0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.action-text-editable__submit[data-v-c537247a]{position:absolute;inset-inline-start:0;top:auto;width:1px;height:1px;overflow:hidden;z-index:-1;opacity:0}.action-text-editable__label[data-v-c537247a]{display:flex;align-items:center;justify-content:center;position:absolute;inset-inline-end:calc((var(--default-clickable-area) - 16px) / 2 + 1px);bottom:1px;width:calc(var(--default-clickable-area) - 8px);height:calc(var(--default-clickable-area) - 8px);box-sizing:border-box;margin:0;padding:7px 6px;border:0;border-radius:50%;background-color:var(--color-main-background);background-clip:padding-box}.action-text-editable__label[data-v-c537247a],.action-text-editable__label[data-v-c537247a] *{cursor:pointer}.action-text-editable__textarea[data-v-c537247a]{flex:1 1 auto;color:inherit;border-color:var(--color-border-maxcontrast);min-height:calc(var(--default-clickable-area) * 2 - 8px);max-height:calc(var(--default-clickable-area) * 3 - 8px);min-width:calc(var(--default-clickable-area) * 4);width:100%!important;margin:0}.action-text-editable__textarea[data-v-c537247a]:disabled{cursor:default}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):invalid+.action-text-editable__label[data-v-c537247a]{background-color:var(--color-error)}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-c537247a]:active,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-c537247a]:hover,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-c537247a]:focus{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.action-text-editable__textarea:active:not(:disabled)+.action-text-editable__label[data-v-c537247a],.action-text-editable__textarea:hover:not(:disabled)+.action-text-editable__label[data-v-c537247a],.action-text-editable__textarea:focus:not(:disabled)+.action-text-editable__label[data-v-c537247a]{z-index:2;border-color:var(--color-primary-element);border-inline-start-color:transparent}li:last-child>.action-text-editable[data-v-c537247a]{margin-bottom:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}li:first-child>.action-text-editable[data-v-c537247a]{margin-top:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}.material-design-icon[data-v-b3f8ea5e]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-details-toggle[data-v-b3f8ea5e]{position:sticky;width:var(--default-clickable-area);height:var(--default-clickable-area);padding:calc((var(--default-clickable-area) - 16px) / 2);cursor:pointer;opacity:.6;transform:rotate(180deg);background-color:var(--color-main-background);z-index:2000;top:var(--app-navigation-padding);inset-inline-start:calc(var(--default-clickable-area) + var(--app-navigation-padding) * 2)}.app-details-toggle--mobile[data-v-b3f8ea5e]{inset-inline-start:var(--app-navigation-padding)}.app-details-toggle[data-v-b3f8ea5e]:active,.app-details-toggle[data-v-b3f8ea5e]:hover,.app-details-toggle[data-v-b3f8ea5e]:focus{opacity:1}.material-design-icon[data-v-4d51da87]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-content[data-v-4d51da87]{position:initial;z-index:1000;flex-basis:100vw;height:100%;margin:0!important;background-color:var(--color-main-background);min-width:0}.app-content[data-v-4d51da87]:not(.app-content--has-list){overflow:auto}.app-content-wrapper[data-v-4d51da87]{position:relative;width:100%;height:100%}.app-content-wrapper--no-split.app-content-wrapper--show-list[data-v-4d51da87] .app-content-list{display:flex}.app-content-wrapper--no-split.app-content-wrapper--show-list[data-v-4d51da87] .app-content-details,.app-content-wrapper--no-split.app-content-wrapper--show-details[data-v-4d51da87] .app-content-list{display:none}.app-content-wrapper--no-split.app-content-wrapper--show-details[data-v-4d51da87] .app-content-details{display:block}[data-v-4d51da87] .splitpanes.default-theme .app-content-list{max-width:none;scrollbar-width:auto}[data-v-4d51da87] .splitpanes.default-theme .splitpanes__pane{background-color:transparent;transition:none}[data-v-4d51da87] .splitpanes.default-theme .splitpanes__pane-list{min-width:300px;position:sticky}@media only screen and (width < 1024px){[data-v-4d51da87] .splitpanes.default-theme .splitpanes__pane-list{display:none}}[data-v-4d51da87] .splitpanes.default-theme .splitpanes__pane-details{overflow-y:auto}@media only screen and (width < 1024px){[data-v-4d51da87] .splitpanes.default-theme .splitpanes__pane-details{min-width:100%}}[data-v-4d51da87] .splitpanes.default-theme .splitpanes__splitter{background-color:var(--color-main-background)}[data-v-4d51da87] .splitpanes.default-theme .splitpanes__splitter:before,[data-v-4d51da87] .splitpanes.default-theme .splitpanes__splitter:after{background-color:var(--color-border)}[data-v-4d51da87] .splitpanes.default-theme.splitpanes--vertical .splitpanes__splitter{border-inline-start:1px solid var(--color-border)}[data-v-4d51da87] .splitpanes.default-theme.splitpanes--horizontal .splitpanes__splitter{border-top:1px solid var(--color-border)}.app-content-wrapper--show-list[data-v-4d51da87] .app-content-list{max-width:none}.splitpanes{display:flex;width:100%;height:100%}.splitpanes--vertical{flex-direction:row}.splitpanes--horizontal{flex-direction:column}.splitpanes--dragging .splitpanes__pane,*:has(.splitpanes--dragging){-webkit-user-select:none;user-select:none;pointer-events:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical .splitpanes__pane{transition:width .2s ease-out;will-change:width}.splitpanes--horizontal .splitpanes__pane{transition:height .2s ease-out;will-change:height}.splitpanes--dragging .splitpanes__pane{transition:none}.splitpanes__splitter{touch-action:none}.splitpanes--vertical>.splitpanes__splitter{min-width:1px;cursor:col-resize}.splitpanes--horizontal>.splitpanes__splitter{min-height:1px;cursor:row-resize}.default-theme.splitpanes .splitpanes__pane{background-color:#f2f2f2}.default-theme.splitpanes .splitpanes__splitter{background-color:#fff;box-sizing:border-box;position:relative;flex-shrink:0}.default-theme.splitpanes .splitpanes__splitter:before,.default-theme.splitpanes .splitpanes__splitter:after{content:"";position:absolute;top:50%;left:50%;background-color:#00000026;transition:background-color .3s}.default-theme.splitpanes .splitpanes__splitter:hover:before,.default-theme.splitpanes .splitpanes__splitter:hover:after{background-color:#00000040}.default-theme.splitpanes .splitpanes__splitter:first-child{cursor:auto}.default-theme.splitpanes .splitpanes .splitpanes__splitter{z-index:1}.default-theme.splitpanes--vertical>.splitpanes__splitter,.default-theme .splitpanes--vertical>.splitpanes__splitter{width:7px;border-left:1px solid #eee;margin-left:-1px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{transform:translateY(-50%);width:1px;height:30px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:before{margin-left:-2px}.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{margin-left:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter,.default-theme .splitpanes--horizontal>.splitpanes__splitter{height:7px;border-top:1px solid #eee;margin-top:-1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{transform:translate(-50%);width:30px;height:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before{margin-top:-2px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{margin-top:1px}.material-design-icon[data-v-5a15295d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-toggle-wrapper[data-v-5a15295d]{position:absolute;top:var(--app-navigation-padding);inset-inline-end:calc(0px - var(--app-navigation-padding));margin-inline-end:calc(-1 * var(--default-clickable-area))}button.app-navigation-toggle[data-v-5a15295d]{background-color:var(--color-main-background)}.app-navigation,.app-content{--app-navigation-padding: calc(var(--default-grid-baseline, 4px) * 2)}.material-design-icon[data-v-eafc54c9]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation[data-v-eafc54c9]{--color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-text-maxcontrast-default));transition:transform var(--animation-quick),margin var(--animation-quick);width:300px;--app-navigation-max-width: calc(100vw - (var(--app-navigation-padding) + var(--default-clickable-area) + var(--default-grid-baseline)));max-width:var(--app-navigation-max-width);position:relative;top:0;inset-inline-start:0;padding:0;z-index:1800;height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-grow:0;flex-shrink:0;background-color:var(--color-main-background-blur, var(--color-main-background));-webkit-backdrop-filter:var(--filter-background-blur, none);backdrop-filter:var(--filter-background-blur, none)}.app-navigation--closed[data-v-eafc54c9]{margin-inline-start:calc(-1*min(300px,var(--app-navigation-max-width)))}.app-navigation__search[data-v-eafc54c9]{width:100%}.app-navigation__body[data-v-eafc54c9]{overflow-y:scroll}.app-navigation__content>ul[data-v-eafc54c9]{position:relative;width:100%;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;gap:var(--default-grid-baseline, 4px);padding:var(--app-navigation-padding)}.app-navigation .app-navigation__list[data-v-eafc54c9]{height:100%}.app-navigation__body--no-list[data-v-eafc54c9]{flex:1 1 auto;overflow:auto;height:100%}.app-navigation__content[data-v-eafc54c9]{height:100%;display:flex;flex-direction:column}[data-themes*=highcontrast] .app-navigation[data-v-eafc54c9]{border-inline-end:1px solid var(--color-border)}@media only screen and (max-width: 1024px){.app-navigation[data-v-eafc54c9]{position:absolute;border-inline-end:1px solid var(--color-border)}}@media only screen and (max-width: 512px){.app-navigation[data-v-eafc54c9]{z-index:1400}}.material-design-icon[data-v-d72957ed]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-list[data-v-d72957ed]{position:relative;width:100%;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;gap:var(--default-grid-baseline, 4px);padding:var(--app-navigation-padding)}.material-design-icon[data-v-21e6b451]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-caption[data-v-21e6b451]{display:flex;justify-content:space-between}.app-navigation-caption--heading[data-v-21e6b451]{padding:var(--app-navigation-padding)}.app-navigation-caption--heading[data-v-21e6b451]:not(:first-child):not(:last-child){padding:0 var(--app-navigation-padding)}.app-navigation-caption__name[data-v-21e6b451]{font-weight:700;color:var(--color-main-text);font-size:var(--default-font-size);line-height:var(--default-clickable-area);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:none!important;flex-shrink:0;padding-block:0;padding-inline:calc(var(--default-grid-baseline, 4px) * 2) 0;margin-top:0;margin-bottom:var(--default-grid-baseline)}.app-navigation-caption__actions[data-v-21e6b451]{flex:0 0 var(--default-clickable-area)}.app-navigation-caption[data-v-21e6b451]:not(:first-child){margin-top:calc(var(--default-clickable-area) / 2)}.material-design-icon[data-v-04a313f4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-entry__icon-bullet[data-v-04a313f4]{display:block;padding:calc((var(--default-clickable-area) - 16px) / 2 + 1px)}.app-navigation-entry__icon-bullet div[data-v-04a313f4]{width:14px;height:14px;cursor:pointer;transition:background .1s ease-in-out;border:none;border-radius:50%}.material-design-icon[data-v-e6236e50]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.icon-collapse[data-v-e6236e50]{position:relative;inset-inline-end:0}.icon-collapse[data-v-e6236e50]:hover{background-color:var(--color-background-dark)!important}.icon-collapse--active[data-v-e6236e50]:hover{background-color:var(--color-primary-element)!important}.material-design-icon[data-v-f813ce7a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-entry[data-v-f813ce7a]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;width:100%;min-height:var(--default-clickable-area);transition:background-color var(--animation-quick) ease-in-out;transition:background-color .2s ease-in-out;border-radius:var(--border-radius-element)}.app-navigation-entry-wrapper[data-v-f813ce7a]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;width:100%}.app-navigation-entry-wrapper.app-navigation-entry--collapsible:not(.app-navigation-entry--opened)>ul[data-v-f813ce7a]{display:none}.app-navigation-entry.active[data-v-f813ce7a]{background-color:var(--color-primary-element)!important}.app-navigation-entry.active[data-v-f813ce7a]:hover{background-color:var(--color-primary-element-hover)!important}.app-navigation-entry.active .app-navigation-entry-link[data-v-f813ce7a],.app-navigation-entry.active .app-navigation-entry-button[data-v-f813ce7a]{color:var(--color-primary-element-text)!important}.app-navigation-entry[data-v-f813ce7a]:focus-within,.app-navigation-entry[data-v-f813ce7a]:hover{background-color:var(--color-background-hover)}.app-navigation-entry.active .app-navigation-entry__children[data-v-f813ce7a],.app-navigation-entry:focus-within .app-navigation-entry__children[data-v-f813ce7a],.app-navigation-entry:hover .app-navigation-entry__children[data-v-f813ce7a]{background-color:var(--color-main-background)}.app-navigation-entry.active .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f813ce7a],.app-navigation-entry.app-navigation-entry--deleted .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f813ce7a],.app-navigation-entry:focus .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f813ce7a],.app-navigation-entry:focus-within .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f813ce7a],.app-navigation-entry:hover .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f813ce7a]{display:inline-block}.app-navigation-entry .app-navigation-entry__actions[data-v-f813ce7a]:hover .button-vue{background-color:var(--color-background-dark)!important}.app-navigation-entry.active .app-navigation-entry__actions[data-v-f813ce7a]:hover .button-vue{background-color:var(--color-primary-element)!important}.app-navigation-entry.app-navigation-entry--deleted>ul[data-v-f813ce7a]{display:none}.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-f813ce7a],.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-f813ce7a]{padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.app-navigation-entry .app-navigation-entry-link[data-v-f813ce7a],.app-navigation-entry .app-navigation-entry-button[data-v-f813ce7a]{z-index:100;display:flex;overflow:hidden;flex:1 1 0;min-height:var(--default-clickable-area);padding:0;white-space:nowrap;color:var(--color-main-text);background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px 16px;line-height:var(--default-clickable-area)}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry-icon[data-v-f813ce7a],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry-icon[data-v-f813ce7a]{display:flex;align-items:center;flex:0 0 var(--default-clickable-area);justify-content:center;width:var(--default-clickable-area);height:var(--default-clickable-area);background-size:16px 16px;background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry__name[data-v-f813ce7a],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry__name[data-v-f813ce7a]{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis}.app-navigation-entry .app-navigation-entry-link .editingContainer[data-v-f813ce7a],.app-navigation-entry .app-navigation-entry-button .editingContainer[data-v-f813ce7a]{width:calc(100% - var(--default-clickable-area));margin:auto}.app-navigation-entry .app-navigation-entry-link[data-v-f813ce7a]:focus-visible,.app-navigation-entry .app-navigation-entry-button[data-v-f813ce7a]:focus-visible{box-shadow:0 0 0 4px var(--color-main-background);outline:2px solid var(--color-main-text);border-radius:var(--border-radius-element)}.app-navigation-entry__children[data-v-f813ce7a]{--app-navigation-item-child-offset: 10px;position:relative;display:flex;flex:0 1 auto;flex-direction:column;width:100%;gap:var(--default-grid-baseline, 4px);padding-inline-start:var(--app-navigation-item-child-offset)}.app-navigation-entry__children .app-navigation-entry[data-v-f813ce7a]{display:inline-flex;flex-wrap:wrap}.app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children[data-v-f813ce7a]{--app-navigation-item-child-offset: 0}.app-navigation-entry__deleted[data-v-f813ce7a]{display:inline-flex;flex:1 1 0;padding-inline-start:calc(var(--default-clickable-area) - (var(--default-clickable-area) - 16px) / 2)!important}.app-navigation-entry__deleted .app-navigation-entry__deleted-description[data-v-f813ce7a]{position:relative;overflow:hidden;flex:1 1 0;white-space:nowrap;text-overflow:ellipsis;line-height:var(--default-clickable-area)}.app-navigation-entry__utils[data-v-f813ce7a]{display:flex;min-width:var(--default-clickable-area);align-items:center;flex:0 1 auto;justify-content:flex-end}.app-navigation-entry__utils.app-navigation-entry__utils--display-actions .action-item.app-navigation-entry__actions[data-v-f813ce7a]{display:inline-block}.app-navigation-entry__utils .app-navigation-entry__counter-wrapper[data-v-f813ce7a]{margin-inline-end:calc(var(--default-grid-baseline) * 2);display:flex;align-items:center;flex:0 1 auto}.app-navigation-entry__utils .action-item.app-navigation-entry__actions[data-v-f813ce7a]{display:none}.app-navigation-entry--editing .app-navigation-entry-edit[data-v-f813ce7a]{z-index:250;opacity:1}.app-navigation-entry--deleted .app-navigation-entry-deleted[data-v-f813ce7a]{z-index:250;transform:translate(0)}.app-navigation-entry--pinned[data-v-f813ce7a]{order:2;margin-top:auto}.app-navigation-entry--pinned~.app-navigation-entry--pinned[data-v-f813ce7a]{margin-top:0}[data-themes*=highcontrast] .app-navigation-entry[data-v-f813ce7a]:active{background-color:var(--color-primary-element-light-hover)!important}.material-design-icon[data-v-dd457d48]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-input-confirm[data-v-dd457d48]{flex:1 0 100%;width:100%}.app-navigation-input-confirm form[data-v-dd457d48]{display:flex}.app-navigation-input-confirm__input[data-v-dd457d48]{height:34px;flex:1 1 100%;font-size:100%!important;margin:5px!important;margin-inline-start:-8px!important;padding:7px!important}.app-navigation-input-confirm__input[data-v-dd457d48]:active,.app-navigation-input-confirm__input[data-v-dd457d48]:focus,.app-navigation-input-confirm__input[data-v-dd457d48]:hover{outline:none;background-color:var(--color-main-background);color:var(--color-main-text);border-color:var(--color-primary-element)}.material-design-icon[data-v-cf399190]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.loading-icon[data-v-cf399190]{overflow:hidden}.loading-icon svg[data-v-cf399190]{animation:rotate var(--animation-duration, .8s) linear infinite}.material-design-icon[data-v-0ba6c9df]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-new[data-v-0ba6c9df]{display:block;padding:calc(var(--default-grid-baseline, 4px) * 2)}.app-navigation-new button[data-v-0ba6c9df]{width:100%}.material-design-icon[data-v-ee07f8f8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-entry[data-v-ee07f8f8]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;width:100%;min-height:var(--default-clickable-area);transition:background-color var(--animation-quick) ease-in-out;transition:background-color .2s ease-in-out;border-radius:var(--border-radius-element)}.app-navigation-entry-wrapper[data-v-ee07f8f8]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;width:100%}.app-navigation-entry-wrapper.app-navigation-entry--collapsible:not(.app-navigation-entry--opened)>ul[data-v-ee07f8f8]{display:none}.app-navigation-entry.active[data-v-ee07f8f8]{background-color:var(--color-primary-element)!important}.app-navigation-entry.active[data-v-ee07f8f8]:hover{background-color:var(--color-primary-element-hover)!important}.app-navigation-entry.active .app-navigation-entry-link[data-v-ee07f8f8],.app-navigation-entry.active .app-navigation-entry-button[data-v-ee07f8f8]{color:var(--color-primary-element-text)!important}.app-navigation-entry[data-v-ee07f8f8]:focus-within,.app-navigation-entry[data-v-ee07f8f8]:hover{background-color:var(--color-background-hover)}.app-navigation-entry.active .app-navigation-entry__children[data-v-ee07f8f8],.app-navigation-entry:focus-within .app-navigation-entry__children[data-v-ee07f8f8],.app-navigation-entry:hover .app-navigation-entry__children[data-v-ee07f8f8]{background-color:var(--color-main-background)}.app-navigation-entry.active .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8],.app-navigation-entry.app-navigation-entry--deleted .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8],.app-navigation-entry:focus .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8],.app-navigation-entry:focus-within .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8],.app-navigation-entry:hover .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8]{display:inline-block}.app-navigation-entry .app-navigation-entry__actions[data-v-ee07f8f8]:hover .button-vue{background-color:var(--color-background-dark)!important}.app-navigation-entry.active .app-navigation-entry__actions[data-v-ee07f8f8]:hover .button-vue{background-color:var(--color-primary-element)!important}.app-navigation-entry.app-navigation-entry--deleted>ul[data-v-ee07f8f8]{display:none}.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-ee07f8f8],.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-ee07f8f8]{padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.app-navigation-entry .app-navigation-entry-link[data-v-ee07f8f8],.app-navigation-entry .app-navigation-entry-button[data-v-ee07f8f8]{z-index:100;display:flex;overflow:hidden;flex:1 1 0;min-height:var(--default-clickable-area);padding:0;white-space:nowrap;color:var(--color-main-text);background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px 16px;line-height:var(--default-clickable-area)}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry-icon[data-v-ee07f8f8],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry-icon[data-v-ee07f8f8]{display:flex;align-items:center;flex:0 0 var(--default-clickable-area);justify-content:center;width:var(--default-clickable-area);height:var(--default-clickable-area);background-size:16px 16px;background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry__name[data-v-ee07f8f8],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry__name[data-v-ee07f8f8]{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis}.app-navigation-entry .app-navigation-entry-link .editingContainer[data-v-ee07f8f8],.app-navigation-entry .app-navigation-entry-button .editingContainer[data-v-ee07f8f8]{width:calc(100% - var(--default-clickable-area));margin:auto}.app-navigation-entry .app-navigation-entry-link[data-v-ee07f8f8]:focus-visible,.app-navigation-entry .app-navigation-entry-button[data-v-ee07f8f8]:focus-visible{box-shadow:0 0 0 4px var(--color-main-background);outline:2px solid var(--color-main-text);border-radius:var(--border-radius-element)}.app-navigation-entry__children[data-v-ee07f8f8]{--app-navigation-item-child-offset: 10px;position:relative;display:flex;flex:0 1 auto;flex-direction:column;width:100%;gap:var(--default-grid-baseline, 4px);padding-inline-start:var(--app-navigation-item-child-offset)}.app-navigation-entry__children .app-navigation-entry[data-v-ee07f8f8]{display:inline-flex;flex-wrap:wrap}.app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children[data-v-ee07f8f8]{--app-navigation-item-child-offset: 0}.app-navigation-entry__deleted[data-v-ee07f8f8]{display:inline-flex;flex:1 1 0;padding-inline-start:calc(var(--default-clickable-area) - (var(--default-clickable-area) - 16px) / 2)!important}.app-navigation-entry__deleted .app-navigation-entry__deleted-description[data-v-ee07f8f8]{position:relative;overflow:hidden;flex:1 1 0;white-space:nowrap;text-overflow:ellipsis;line-height:var(--default-clickable-area)}.app-navigation-entry__utils[data-v-ee07f8f8]{display:flex;min-width:var(--default-clickable-area);align-items:center;flex:0 1 auto;justify-content:flex-end}.app-navigation-entry__utils.app-navigation-entry__utils--display-actions .action-item.app-navigation-entry__actions[data-v-ee07f8f8]{display:inline-block}.app-navigation-entry__utils .app-navigation-entry__counter-wrapper[data-v-ee07f8f8]{margin-inline-end:calc(var(--default-grid-baseline) * 2);display:flex;align-items:center;flex:0 1 auto}.app-navigation-entry__utils .action-item.app-navigation-entry__actions[data-v-ee07f8f8]{display:none}.app-navigation-entry--editing .app-navigation-entry-edit[data-v-ee07f8f8]{z-index:250;opacity:1}.app-navigation-entry--deleted .app-navigation-entry-deleted[data-v-ee07f8f8]{z-index:250;transform:translate(0)}.app-navigation-entry--pinned[data-v-ee07f8f8]{order:2;margin-top:auto}.app-navigation-entry--pinned~.app-navigation-entry--pinned[data-v-ee07f8f8]{margin-top:0}[data-themes*=highcontrast] .app-navigation-entry[data-v-ee07f8f8]:active{background-color:var(--color-primary-element-light-hover)!important}.app-navigation-new-item__name[data-v-ee07f8f8]{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis;padding-inline-start:7px;font-size:14px}.newItemContainer[data-v-ee07f8f8]{width:calc(100% - var(--default-clickable-area));margin:auto}.material-design-icon[data-v-12aea064]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-search[data-v-12aea064]{display:flex;gap:var(--app-navigation-padding);padding:var(--app-navigation-padding)}.app-navigation-search--has-actions .app-navigation-search__input[data-v-12aea064]{flex-grow:1;z-index:3}.app-navigation-search__actions[data-v-12aea064]{display:flex;gap:var(--default-grid-baseline);margin-inline-start:0;max-width:calc(2 * var(--default-clickable-area) + var(--default-grid-baseline));max-height:var(--default-clickable-area);transition:margin-inline-start var(--animation-quick)}.app-navigation-search__actions--hidden[data-v-12aea064]{margin-inline-start:calc(-1 * var(--default-clickable-area))}._container_fpy51_2{margin-top:auto;padding:var(--default-grid-baseline)}._header_fpy51_7{margin-block:0 var(--default-grid-baseline);margin-inline:var(--default-grid-baseline)}._button_fpy51_13{padding-inline:0 calc((var(--default-clickable-area) - 16px) / 2)!important}._button_fpy51_13 .button-vue__text{font-weight:400}._content_fpy51_21{display:block;padding:10px;margin-bottom:calc(-1 * var(--default-grid-baseline));max-height:300px;overflow-y:auto}._animationActive_fpy51_33{transition-duration:var(--animation-slow);transition-property:max-height,padding;overflow-y:hidden!important}._animationStop_fpy51_39{max-height:0!important;padding:0 10px!important}.app-navigation-spacer[data-v-277fa710]{flex-shrink:0;height:22px}.material-design-icon[data-v-5f3b5743]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}[data-v-5f3b5743] .app-settings__navigation{min-width:200px;margin-inline-end:calc(4 * var(--default-grid-baseline));overflow-x:hidden;overflow-y:auto;position:relative}[data-v-5f3b5743] .app-settings__content{padding-inline:calc(4 * var(--default-grid-baseline))}.navigation-list[data-v-5f3b5743]{height:100%;overflow-y:auto;padding:calc(3 * var(--default-grid-baseline))}.navigation-list__link[data-v-5f3b5743]{display:flex;align-content:center;font-size:16px;height:var(--default-clickable-area);margin:4px 0;line-height:var(--default-clickable-area);border-radius:var(--border-radius-element);font-weight:700;padding:0 calc(4 * var(--default-grid-baseline));cursor:pointer;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;background-color:transparent;border:none}.navigation-list__link[data-v-5f3b5743]:hover,.navigation-list__link[data-v-5f3b5743]:focus{background-color:var(--color-background-hover)}.navigation-list__link--active[data-v-5f3b5743]{background-color:var(--color-primary-element-light)!important}.navigation-list__link--icon[data-v-5f3b5743]{padding-inline-start:calc(2 * var(--default-grid-baseline));gap:var(--default-grid-baseline)}.navigation-list__link-icon[data-v-5f3b5743]{display:flex;justify-content:center;align-content:center;width:calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline));max-width:calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline))}@media only screen and (max-width: 512px){.app-settings[data-v-5f3b5743] .dialog__name{padding-inline-start:16px}}@media only screen and (max-width: 512px){.dialog__modal .modal-wrapper--small .modal-container{width:fit-content;height:unset;max-height:90%;position:relative;top:unset;border-radius:var(--border-radius-element)}}.material-design-icon[data-v-ca0b8eba]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.dialog[data-v-ca0b8eba]{height:100%;width:100%;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.dialog__modal[data-v-ca0b8eba] .modal-wrapper .modal-container{display:flex!important;padding-block:4px 0;padding-inline:12px 0}.dialog__modal[data-v-ca0b8eba] .modal-wrapper .modal-container__content{display:flex;flex-direction:column;overflow:hidden}.dialog__wrapper[data-v-ca0b8eba]{display:flex;flex-direction:row;flex:1;min-height:0;overflow:hidden}.dialog__wrapper--collapsed[data-v-ca0b8eba]{flex-direction:column}.dialog__navigation[data-v-ca0b8eba]{display:flex;flex-shrink:0}.dialog__wrapper:not(.dialog__wrapper--collapsed) .dialog__navigation[data-v-ca0b8eba]{flex-direction:column;overflow:hidden auto;height:100%;min-width:200px;margin-inline-end:20px}.dialog__wrapper.dialog__wrapper--collapsed .dialog__navigation[data-v-ca0b8eba]{flex-direction:row;justify-content:space-between;overflow:auto hidden;width:100%;min-width:100%}.dialog__name[data-v-ca0b8eba]{font-size:21px;text-align:center;height:fit-content;min-height:var(--default-clickable-area);line-height:var(--default-clickable-area);overflow-wrap:break-word;margin-block:0 12px}.dialog__content[data-v-ca0b8eba]{flex:1;min-height:0;overflow:auto;padding-inline-end:12px}.dialog__text[data-v-ca0b8eba]{padding-block-end:6px}.dialog__actions[data-v-ca0b8eba]{display:flex;gap:6px;align-content:center;justify-content:end;width:100%;max-width:100%;padding-inline:0 12px;margin-inline:0;margin-block:0}.dialog__actions[data-v-ca0b8eba]:not(:empty){margin-block:6px 12px}@media only screen and (max-width: 512px){.dialog__name[data-v-ca0b8eba]{text-align:start;margin-inline-end:var(--default-clickable-area)}}.material-design-icon[data-v-70dc2566]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.modal-mask[data-v-70dc2566]{position:fixed;z-index:9998;top:0;inset-inline-start:0;display:block;width:100%;height:100%;--backdrop-color: 0, 0, 0;background-color:rgba(var(--backdrop-color),.5)}.modal-mask[data-v-70dc2566],.modal-mask[data-v-70dc2566] *{box-sizing:border-box}.modal-mask--opaque[data-v-70dc2566]{background-color:rgba(var(--backdrop-color),.92)}.modal-mask--light[data-v-70dc2566]{--backdrop-color: 255, 255, 255}.modal-header[data-v-70dc2566]{position:absolute;z-index:10001;top:0;inset-inline:0 0;display:flex!important;align-items:center;justify-content:center;width:100%;height:var(--header-height);overflow:hidden;transition:opacity .25s,visibility .25s}.modal-header__name[data-v-70dc2566]{overflow-x:hidden;width:100%;padding:0 calc(var(--default-clickable-area) * 3) 0 12px;transition:padding ease .1s;white-space:nowrap;text-overflow:ellipsis;font-size:16px;margin-block:0}@media only screen and (min-width: 1024px){.modal-header__name[data-v-70dc2566]{padding-inline-start:calc(var(--default-clickable-area) * 3);text-align:center}}.modal-header .icons-menu[data-v-70dc2566]{position:absolute;inset-inline-end:0;display:flex;align-items:center;justify-content:flex-end}.modal-header .icons-menu .header-close[data-v-70dc2566]{display:flex;align-items:center;justify-content:center;margin:calc((var(--header-height) - var(--default-clickable-area)) / 2);padding:0}.modal-header .icons-menu .play-pause-icons[data-v-70dc2566]{position:relative;width:var(--header-height);height:var(--header-height);margin:0;padding:0;cursor:pointer;border:none;background-color:transparent}.modal-header .icons-menu .play-pause-icons:hover .play-pause-icons__play[data-v-70dc2566],.modal-header .icons-menu .play-pause-icons:hover .play-pause-icons__pause[data-v-70dc2566],.modal-header .icons-menu .play-pause-icons:focus .play-pause-icons__play[data-v-70dc2566],.modal-header .icons-menu .play-pause-icons:focus .play-pause-icons__pause[data-v-70dc2566]{opacity:1;border-radius:calc(var(--default-clickable-area) / 2);background-color:#7f7f7f40}.modal-header .icons-menu .play-pause-icons__play[data-v-70dc2566],.modal-header .icons-menu .play-pause-icons__pause[data-v-70dc2566]{width:var(--default-clickable-area);height:var(--default-clickable-area);margin:calc((var(--header-height) - var(--default-clickable-area)) / 2);cursor:pointer;opacity:.7}.modal-header .icons-menu[data-v-70dc2566] .action-item{margin:calc((var(--header-height) - var(--default-clickable-area)) / 2)}.modal-header .icons-menu[data-v-70dc2566] .action-item--single{width:var(--default-clickable-area);height:var(--default-clickable-area);cursor:pointer;background-position:center;background-size:22px}.modal-header .icons-menu .header-actions[data-v-70dc2566] button:focus-visible{box-shadow:none!important;outline:2px solid #fff!important}.modal-header .icons-menu[data-v-70dc2566] .action-item__menutoggle{padding:0}.modal-header .icons-menu[data-v-70dc2566] .action-item__menutoggle span,.modal-header .icons-menu[data-v-70dc2566] .action-item__menutoggle svg{width:var(--icon-size);height:var(--icon-size)}.modal-wrapper[data-v-70dc2566]{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.modal-wrapper .prev[data-v-70dc2566],.modal-wrapper .next[data-v-70dc2566]{z-index:10000;height:35vh;min-height:300px;position:absolute;transition:opacity .25s;color:#fff}.modal-wrapper .prev[data-v-70dc2566]:focus-visible,.modal-wrapper .next[data-v-70dc2566]:focus-visible{box-shadow:0 0 0 2px var(--color-primary-element-text);background-color:var(--color-box-shadow)}.modal-wrapper .prev[data-v-70dc2566]{inset-inline-start:2px}.modal-wrapper .next[data-v-70dc2566]{inset-inline-end:2px}.modal-wrapper .modal-container[data-v-70dc2566]{position:relative;display:flex;padding:0;transition:transform .3s ease;border-radius:var(--border-radius-container);background-color:var(--color-main-background);color:var(--color-main-text);box-shadow:0 0 40px #0003}.modal-wrapper .modal-container__close[data-v-70dc2566]{z-index:1;position:absolute;top:4px;inset-inline-end:var(--default-grid-baseline)}.modal-wrapper .modal-container__content[data-v-70dc2566]{width:100%;min-height:52px;overflow:auto}.modal-wrapper--small>.modal-container[data-v-70dc2566]{width:400px;max-width:90%;max-height:min(90%,100% - 2 * var(--header-height))}.modal-wrapper--normal>.modal-container[data-v-70dc2566]{max-width:90%;width:600px;max-height:min(90%,100% - 2 * var(--header-height))}.modal-wrapper--large>.modal-container[data-v-70dc2566]{max-width:90%;width:900px;max-height:min(90%,100% - 2 * var(--header-height))}.modal-wrapper--full>.modal-container[data-v-70dc2566]{width:100%;height:calc(100% - var(--header-height));position:absolute;top:var(--header-height);border-radius:0}@media only screen and ((max-width: 512px) or (max-height: 400px)){.modal-wrapper .modal-container[data-v-70dc2566]{max-width:initial;width:100%;max-height:initial;height:calc(100% - var(--header-height));position:absolute;top:var(--header-height);border-radius:0}}.fade-enter-active[data-v-70dc2566],.fade-leave-active[data-v-70dc2566]{transition:opacity .25s}.fade-enter-from[data-v-70dc2566],.fade-leave-to[data-v-70dc2566]{opacity:0}.fade-visibility-enter-from[data-v-70dc2566],.fade-visibility-leave-to[data-v-70dc2566]{visibility:hidden;opacity:0}.modal-in-enter-active[data-v-70dc2566],.modal-in-leave-active[data-v-70dc2566],.modal-out-enter-active[data-v-70dc2566],.modal-out-leave-active[data-v-70dc2566]{transition:opacity .25s}.modal-in-enter-from[data-v-70dc2566],.modal-in-leave-to[data-v-70dc2566],.modal-out-enter-from[data-v-70dc2566],.modal-out-leave-to[data-v-70dc2566]{opacity:0}.modal-in-enter .modal-container[data-v-70dc2566],.modal-in-leave-to .modal-container[data-v-70dc2566]{transform:scale(.9)}.modal-out-enter .modal-container[data-v-70dc2566],.modal-out-leave-to .modal-container[data-v-70dc2566]{transform:scale(1.1)}.modal-mask .play-pause-icons .progress-ring[data-v-70dc2566]{position:absolute;top:0;inset-inline-start:0;transform:rotate(-90deg)}.modal-mask .play-pause-icons .progress-ring .progress-ring__circle[data-v-70dc2566]{transition:.1s stroke-dashoffset;transform-origin:50% 50%;animation:progressring-70dc2566 linear var(--slideshow-duration) infinite;stroke-linecap:round;stroke-dashoffset:94.2477796077;stroke-dasharray:94.2477796077}.modal-mask .play-pause-icons--paused .icon-pause[data-v-70dc2566]{animation:breath-70dc2566 2s cubic-bezier(.4,0,.2,1) infinite}.modal-mask .play-pause-icons--paused .progress-ring__circle[data-v-70dc2566]{animation-play-state:paused!important}@keyframes progressring-70dc2566{0%{stroke-dashoffset:94.2477796077}to{stroke-dashoffset:0}}@keyframes breath-70dc2566{0%{opacity:1}50%{opacity:0}to{opacity:1}}.material-design-icon[data-v-a9004e4c]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-settings-section[data-v-a9004e4c]{margin-bottom:80px}.app-settings-section__name[data-v-a9004e4c]{font-size:1.6em;margin:0;padding:20px 0;font-weight:700;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.material-design-icon[data-v-e06df142]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-sidebar-tabs[data-v-e06df142]{display:flex;flex-direction:column;min-height:0;flex:1 1 100%}.app-sidebar-tabs__nav[data-v-e06df142]{display:flex;justify-content:stretch;margin:10px 8px 0;border-bottom:1px solid var(--color-border)}.app-sidebar-tabs__nav[data-v-e06df142] .checkbox-radio-switch--button-variant{border:unset!important;border-radius:0!important}.app-sidebar-tabs__nav[data-v-e06df142] .checkbox-radio-switch--button-variant .checkbox-content{padding:var(--default-grid-baseline);border-radius:var(--default-grid-baseline) var(--default-grid-baseline) 0 0!important;margin:0!important;border-bottom:var(--default-grid-baseline) solid transparent!important}.app-sidebar-tabs__nav[data-v-e06df142] .checkbox-radio-switch--button-variant .checkbox-content .checkbox-content__icon>*{color:var(--color-main-text)!important}.app-sidebar-tabs__nav[data-v-e06df142] .checkbox-radio-switch--button-variant.checkbox-radio-switch--checked .checkbox-radio-switch__content{background:transparent!important;color:var(--color-main-text)!important;border-bottom:var(--default-grid-baseline) solid var(--color-primary-element)!important}.app-sidebar-tabs__tab[data-v-e06df142]{flex:1 1}.app-sidebar-tabs__tab.active[data-v-e06df142]{color:var(--color-primary-element)}.app-sidebar-tabs__tab-caption[data-v-e06df142]{flex:0 1 100%;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:center}.app-sidebar-tabs__tab-icon[data-v-e06df142]{display:flex;align-items:center;justify-content:center;background-size:20px}.app-sidebar-tabs__tab[data-v-e06df142] .checkbox-radio-switch__content{max-width:unset}.app-sidebar-tabs__content[data-v-e06df142]{position:relative;min-height:256px;height:100%}.app-sidebar-tabs__content--multiple[data-v-e06df142]>:not(section){display:none}@property --app-sidebar-offset{syntax: ""; initial-value: 0; inherits: true;}body{--app-sidebar-padding: calc(var(--default-grid-baseline, 4px) * 2);--app-sidebar-offset: 0;transition:--app-sidebar-offset 0ms!important}body:has(.app-sidebar.slide-right-enter-active),body:has(.app-sidebar.slide-right-leave-active){transition:--app-sidebar-offset var(--animation-quick)}body:has(.app-sidebar__toggle){--app-sidebar-offset: calc(var(--app-sidebar-padding) + var(--default-clickable-area))}.material-design-icon[data-v-3243b41e]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-sidebar[data-v-3243b41e]{--app-sidebar-width: clamp(300px, 27vw, 500px);--app-sidebar-padding: calc(var(--default-grid-baseline, 4px) * 2);width:var(--app-sidebar-width);z-index:1500;top:0;inset-inline-end:0;display:flex;overflow-x:hidden;overflow-y:auto;flex-direction:column;flex-shrink:0;height:100%;border-inline-start:1px solid var(--color-border);background:var(--color-main-background);position:relative}.app-sidebar__toggle[data-v-3243b41e]{position:absolute!important;inset-block-start:var(--app-sidebar-padding);inset-inline-end:var(--app-sidebar-padding);z-index:1001}.app-sidebar .app-sidebar-header[data-v-3243b41e]{--app-sidebar-close-button-offset: calc(var(--default-clickable-area) + var(--app-sidebar-padding))}.app-sidebar .app-sidebar-header>.app-sidebar__close[data-v-3243b41e]{position:absolute;z-index:100;top:var(--app-sidebar-padding);inset-inline-end:var(--app-sidebar-padding);width:var(--default-clickable-area);height:var(--default-clickable-area)}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info[data-v-3243b41e]{flex-direction:row}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__figure[data-v-3243b41e]{--figure-size: calc($desc-height + var(--app-sidebar-padding));z-index:2;width:var(--figure-size);height:var(--figure-size);margin:calc(var(--app-sidebar-padding) / 2);border-radius:3px;flex:0 0 auto}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc[data-v-3243b41e]{padding-inline-start:0;flex:1 1 auto;min-width:0;padding-inline-end:calc(var(--default-clickable-area) + var(--app-sidebar-close-button-offset));padding-top:var(--app-sidebar-padding)}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc.app-sidebar-header__desc--without-actions[data-v-3243b41e]{padding-inline-end:var(--app-sidebar-close-button-offset)}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc .app-sidebar-header__tertiary-actions[data-v-3243b41e]{z-index:3;position:absolute;top:calc(var(--app-sidebar-padding) / 2);inset-inline-start:calc(-1 * var(--default-clickable-area));gap:0}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc .app-sidebar-header__menu[data-v-3243b41e]{top:var(--app-sidebar-padding);inset-inline-end:var(--app-sidebar-close-button-offset);position:absolute}.app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__menu[data-v-3243b41e]{position:absolute;top:var(--app-sidebar-padding);inset-inline-end:var(--app-sidebar-close-button-offset)}.app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__desc[data-v-3243b41e]{padding-inline-end:calc(var(--default-clickable-area) + var(--app-sidebar-close-button-offset))}.app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__desc.app-sidebar-header__desc--without-actions[data-v-3243b41e]{padding-inline-end:var(--app-sidebar-close-button-offset)}.app-sidebar .app-sidebar-header .app-sidebar-header__info[data-v-3243b41e]{display:flex;flex-direction:column}.app-sidebar .app-sidebar-header__figure[data-v-3243b41e]{width:100%;height:250px;max-height:250px;background-repeat:no-repeat;background-position:center;background-size:contain}.app-sidebar .app-sidebar-header__figure--with-action[data-v-3243b41e]{cursor:pointer}.app-sidebar .app-sidebar-header__desc[data-v-3243b41e]{position:relative;display:flex;flex-direction:row;justify-content:center;align-items:center;padding-inline:var(--app-sidebar-padding);padding-block:var(--app-sidebar-padding) calc(var(--app-sidebar-padding) / 2);gap:0 4px}.app-sidebar .app-sidebar-header__desc--with-tertiary-action[data-v-3243b41e]{padding-inline-start:6px}.app-sidebar .app-sidebar-header__desc--editable .app-sidebar-header__mainname-form[data-v-3243b41e],.app-sidebar .app-sidebar-header__desc--with-subname--editable .app-sidebar-header__mainname-form[data-v-3243b41e]{margin-top:-2px;margin-bottom:-2px}.app-sidebar .app-sidebar-header__desc--with-subname--editable .app-sidebar-header__subname[data-v-3243b41e]{margin-top:-2px}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions[data-v-3243b41e]{display:flex;height:var(--default-clickable-area);width:var(--default-clickable-area);justify-content:center;flex:0 0 auto}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions .app-sidebar-header__star[data-v-3243b41e]{box-shadow:none}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions .app-sidebar-header__star[data-v-3243b41e]:not([aria-pressed=true]):hover{box-shadow:none;background-color:var(--color-background-hover)}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container[data-v-3243b41e]{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;min-width:0}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container[data-v-3243b41e]{display:flex;align-items:center;min-height:var(--default-clickable-area)}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname[data-v-3243b41e]{padding:0;min-height:30px;font-size:20px;line-height:30px}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname[data-v-3243b41e] .linkified{cursor:pointer;text-decoration:underline;margin:0}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname-form[data-v-3243b41e]{display:flex;flex:1 1 auto;align-items:center}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname-form input.app-sidebar-header__mainname-input[data-v-3243b41e]{flex:1 1 auto;margin:0;padding:7px;font-size:20px;font-weight:700}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__menu[data-v-3243b41e]{margin-inline-start:5px}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname[data-v-3243b41e],.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__subname[data-v-3243b41e]{overflow:hidden;width:100%;margin:0;white-space:nowrap;text-overflow:ellipsis}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__subname[data-v-3243b41e]{color:var(--color-text-maxcontrast);font-size:var(--default-font-size);padding:0}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__subname[data-v-3243b41e] *{vertical-align:text-bottom}.app-sidebar .app-sidebar-header .app-sidebar-header__mainname--hidden[data-v-3243b41e]{position:absolute;top:0;inset-inline-start:0;margin:0;width:1px;height:1px;overflow:hidden}.app-sidebar .app-sidebar-header__description[data-v-3243b41e]{display:flex;align-items:center;margin:0 10px}@media only screen and (max-width: 512px){.app-sidebar[data-v-3243b41e]{position:absolute;--app-sidebar-width: 100vw}}.slide-right-leave-active[data-v-3243b41e],.slide-right-enter-active[data-v-3243b41e]{transition-duration:var(--animation-quick);transition-property:margin-inline-end}.slide-right-enter-to[data-v-3243b41e],.slide-right-leave[data-v-3243b41e]{margin-inline-end:0}.slide-right-enter-from[data-v-3243b41e],.slide-right-leave-to[data-v-3243b41e]{margin-inline-end:calc(-1 * var(--app-sidebar-width))}.material-design-icon[data-v-a1ac280f]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.checkbox-content[data-v-a1ac280f]{display:flex;align-items:center;flex-direction:row;gap:var(--default-grid-baseline);-webkit-user-select:none;user-select:none;min-height:var(--default-clickable-area);border-radius:var(--checkbox-radio-switch--border-radius);padding:var(--default-grid-baseline) calc((var(--default-clickable-area) - var(--icon-height)) / 2);width:100%;max-width:fit-content}.checkbox-content__wrapper[data-v-a1ac280f]{flex:1 0 0;max-width:100%}.checkbox-content__text[data-v-a1ac280f]:empty{display:none}.checkbox-content-checkbox:not(.checkbox-content--button-variant) .checkbox-content__icon[data-v-a1ac280f],.checkbox-content-radio:not(.checkbox-content--button-variant) .checkbox-content__icon[data-v-a1ac280f],.checkbox-content-switch:not(.checkbox-content--button-variant) .checkbox-content__icon[data-v-a1ac280f]{margin-block:calc((var(--default-clickable-area) - 2 * var(--default-grid-baseline) - var(--icon-height)) / 2) auto}.checkbox-content-checkbox:not(.checkbox-content--button-variant) .checkbox-content__icon--has-description[data-v-a1ac280f],.checkbox-content-radio:not(.checkbox-content--button-variant) .checkbox-content__icon--has-description[data-v-a1ac280f],.checkbox-content-switch:not(.checkbox-content--button-variant) .checkbox-content__icon--has-description[data-v-a1ac280f]{display:flex;align-items:center;margin-block-end:0;align-self:start}.checkbox-content__icon[data-v-a1ac280f]>*{width:var(--icon-size);height:var(--icon-height);color:var(--color-primary-element)}.checkbox-content__description[data-v-a1ac280f]{display:block;color:var(--color-text-maxcontrast)}.checkbox-content--button-variant .checkbox-content__icon[data-v-a1ac280f]:not(.checkbox-content__icon--checked)>*{color:var(--color-primary-element)}.checkbox-content--button-variant .checkbox-content__icon--checked[data-v-a1ac280f]>*{color:var(--color-primary-element-text)}.checkbox-content--has-text[data-v-a1ac280f]{padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.checkbox-content[data-v-a1ac280f],.checkbox-content[data-v-a1ac280f] *{cursor:pointer;flex-shrink:0}.material-design-icon[data-v-0dcb138a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.checkbox-radio-switch[data-v-0dcb138a]{--icon-size: var(--65a7082e);--icon-height: var(--20f7d30f);--checkbox-radio-switch--border-radius: var(--border-radius-element);--checkbox-radio-switch--border-radius-outer: calc(var(--checkbox-radio-switch--border-radius) + 2px);display:flex;align-items:center;color:var(--color-main-text);background-color:transparent;font-size:var(--default-font-size);line-height:var(--default-line-height);padding:0;position:relative}.checkbox-radio-switch__input[data-v-0dcb138a]{position:absolute;z-index:-1;opacity:0!important;width:var(--icon-size);height:var(--icon-size)}.checkbox-radio-switch__input:focus-visible+.checkbox-radio-switch__content[data-v-0dcb138a],.checkbox-radio-switch__input[data-v-0dcb138a]:focus-visible{outline:2px solid var(--color-main-text);border-color:var(--color-main-background);outline-offset:-2px}.checkbox-radio-switch--disabled .checkbox-radio-switch__content[data-v-0dcb138a]{opacity:.5}.checkbox-radio-switch--disabled .checkbox-radio-switch__content[data-v-0dcb138a] .checkbox-radio-switch__icon>*{color:var(--color-main-text)}.checkbox-radio-switch--disabled .checkbox-radio-switch__content.checkbox-content[data-v-0dcb138a],.checkbox-radio-switch--disabled .checkbox-radio-switch__content.checkbox-content[data-v-0dcb138a] *:not(a){cursor:default!important}.checkbox-radio-switch:not(.checkbox-radio-switch--disabled,.checkbox-radio-switch--checked):focus-within .checkbox-radio-switch__content[data-v-0dcb138a],.checkbox-radio-switch:not(.checkbox-radio-switch--disabled,.checkbox-radio-switch--checked) .checkbox-radio-switch__content[data-v-0dcb138a]:hover{background-color:var(--color-background-hover)}.checkbox-radio-switch--checked:not(.checkbox-radio-switch--disabled):focus-within .checkbox-radio-switch__content[data-v-0dcb138a],.checkbox-radio-switch--checked:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__content[data-v-0dcb138a]:hover{background-color:var(--color-primary-element-hover)}.checkbox-radio-switch--checked:not(.checkbox-radio-switch--button-variant):not(.checkbox-radio-switch--disabled):focus-within .checkbox-radio-switch__content[data-v-0dcb138a],.checkbox-radio-switch--checked:not(.checkbox-radio-switch--button-variant):not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__content[data-v-0dcb138a]:hover{background-color:var(--color-primary-element-light-hover)}.checkbox-radio-switch-switch[data-v-0dcb138a]:not(.checkbox-radio-switch--checked) .checkbox-radio-switch__icon>*{color:var(--color-text-maxcontrast)}.checkbox-radio-switch-switch.checkbox-radio-switch--disabled.checkbox-radio-switch--checked[data-v-0dcb138a] .checkbox-radio-switch__icon>*{color:var(--color-primary-element-light)}.checkbox-radio-switch--button-variant.checkbox-radio-switch[data-v-0dcb138a]{background-color:var(--color-main-background);border:2px solid var(--color-border-maxcontrast);overflow:hidden}.checkbox-radio-switch--button-variant.checkbox-radio-switch--checked[data-v-0dcb138a]{font-weight:700}.checkbox-radio-switch--button-variant.checkbox-radio-switch--checked .checkbox-radio-switch__content[data-v-0dcb138a]{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.checkbox-radio-switch--button-variant[data-v-0dcb138a] .checkbox-radio-switch__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.checkbox-radio-switch--button-variant[data-v-0dcb138a]:not(.checkbox-radio-switch--checked) .checkbox-radio-switch__icon>*{color:var(--color-main-text)}.checkbox-radio-switch--button-variant[data-v-0dcb138a] .checkbox-radio-switch__icon:empty{display:none}.checkbox-radio-switch--button-variant[data-v-0dcb138a]:not(.checkbox-radio-switch--button-variant-v-grouped):not(.checkbox-radio-switch--button-variant-h-grouped),.checkbox-radio-switch--button-variant .checkbox-radio-switch__content[data-v-0dcb138a]{border-radius:var(--checkbox-radio-switch--border-radius)}.checkbox-radio-switch--button-variant-v-grouped .checkbox-radio-switch__content[data-v-0dcb138a]{flex-basis:100%;max-width:unset}.checkbox-radio-switch--button-variant-v-grouped[data-v-0dcb138a]:first-of-type{border-start-start-radius:var(--checkbox-radio-switch--border-radius-outer);border-start-end-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-v-grouped[data-v-0dcb138a]:last-of-type{border-end-start-radius:var(--checkbox-radio-switch--border-radius-outer);border-end-end-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-v-grouped[data-v-0dcb138a]:not(:last-of-type){border-bottom:0!important}.checkbox-radio-switch--button-variant-v-grouped:not(:last-of-type) .checkbox-radio-switch__content[data-v-0dcb138a]{margin-bottom:2px}.checkbox-radio-switch--button-variant-v-grouped[data-v-0dcb138a]:not(:first-of-type){border-top:0!important}.checkbox-radio-switch--button-variant-h-grouped[data-v-0dcb138a]:first-of-type{border-start-start-radius:var(--checkbox-radio-switch--border-radius-outer);border-end-start-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-h-grouped[data-v-0dcb138a]:last-of-type{border-start-end-radius:var(--checkbox-radio-switch--border-radius-outer);border-end-end-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-h-grouped[data-v-0dcb138a]:not(:last-of-type){border-inline-end:0!important}.checkbox-radio-switch--button-variant-h-grouped:not(:last-of-type) .checkbox-radio-switch__content[data-v-0dcb138a]{margin-inline-end:2px}.checkbox-radio-switch--button-variant-h-grouped[data-v-0dcb138a]:not(:first-of-type){border-inline-start:0!important}.checkbox-radio-switch--button-variant-h-grouped[data-v-0dcb138a] .checkbox-radio-switch__text{text-align:center;display:flex;align-items:center}.checkbox-radio-switch--button-variant-h-grouped .checkbox-radio-switch__content[data-v-0dcb138a]{flex-direction:column;justify-content:center;width:100%;margin:0;gap:0}.material-design-icon[data-v-697cfd8f]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.empty-content[data-v-697cfd8f]{display:flex;align-items:center;flex-direction:column;justify-content:center;flex-grow:1;padding:var(--default-grid-baseline)}.modal-wrapper .empty-content[data-v-697cfd8f]{margin-top:5vh;margin-bottom:5vh}.empty-content__icon[data-v-697cfd8f]{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin:0 auto 15px;opacity:.4;background-repeat:no-repeat;background-position:center;background-size:64px}.empty-content__icon[data-v-697cfd8f] svg{width:64px!important;height:64px!important;max-width:64px!important;max-height:64px!important}.empty-content__name[data-v-697cfd8f]{margin-bottom:10px;text-align:center;font-weight:700;font-size:20px;line-height:30px}.empty-content__description[data-v-697cfd8f]{color:var(--color-text-maxcontrast);text-align:center;text-wrap-style:balance}.empty-content__action[data-v-697cfd8f]{margin-top:8px}.modal-wrapper .empty-content__action[data-v-697cfd8f]{margin-top:20px;display:flex}.material-design-icon[data-v-dba10798]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-sidebar__tab[data-v-dba10798]{display:none;padding:10px;min-height:100%;max-height:100%;height:100%;overflow:auto}.app-sidebar__tab[data-v-dba10798]:focus{border-color:var(--color-primary-element);box-shadow:0 0 .2em var(--color-primary-element);outline:0}.app-sidebar__tab--active[data-v-dba10798]{display:block}._material-design-icon_1xe1x_12{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._assistantButton_1xe1x_20{--assistant-button-color: var(--color-element-assistant, linear-gradient(238deg, #A569D3 12%, #00679E 39%, #422083 86%));--assistant-button-background-color: var(--color-background-assistant, #F6F5FF);background-image:var(--color-border-assistant, linear-gradient(125deg, #7398FE 50%, #6104A4 125%));border-radius:var(--border-radius-element);height:var(--default-clickable-area);width:fit-content;padding-inline:1px;padding-block:1px 2px}._assistantButton_disabled_1xe1x_30{filter:saturate(.5);opacity:.5}._assistantButton_primary_1xe1x_34{--assistant-button-color: white;--assistant-button-background-color: var(--color-element-assistant,linear-gradient(238deg, #A569D3 12%, #00679E 39%, #422083 86%))}._assistantButton_primary_1xe1x_34 ._assistantButton__icon_1xe1x_38,._assistantButton_primary_1xe1x_34 ._assistantButton__text_1xe1x_39{color:#fff!important}._assistantButton__button_1xe1x_42{--button-size: calc(var(--default-clickable-area) - 3px) !important;background-color:var(--assistant-button-background-color)!important;background-image:var(--assistant-button-background-color)!important;border:none!important}._assistantButton__button_1xe1x_42:hover{filter:brightness(120%)}._assistantButton__text_1xe1x_39{background-image:var(--assistant-button-color);color:transparent!important;-webkit-background-clip:text;background-clip:text}._material-design-icon_1ndue_12{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._assistantIcon_1ndue_20{display:inline-flex;align-items:center;justify-content:center}._assistantIcon_1ndue_20:not(._assistantIcon_inline_1ndue_25){display:flex;min-height:var(--default-clickable-area);min-width:var(--default-clickable-area)}._assistantIcon__svg_1ndue_30{display:inline-block;width:var(--6629513e);height:var(--6629513e);max-width:var(--6629513e);max-height:var(--6629513e)}._material-design-icon_ri18g_12{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._assistantContent_ri18g_20{background-image:var(--color-border-assistant, linear-gradient(125deg, #7398FE 50%, #6104A4 125%));border-radius:var(--border-radius-container);padding:2px}._assistantContent__inner_ri18g_25{background-color:var(--color-background-assistant, #F6F5FF);border-radius:calc(var(--border-radius-container) - 1px);color:var(--color-main-text);padding:calc(var(--border-radius-container) - 1px);height:100%;width:100%}.material-design-icon[data-v-786083b4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.avatardiv[data-v-786083b4]{position:relative;display:inline-block;width:var(--avatar-size);height:var(--avatar-size)}.avatardiv--unknown[data-v-786083b4]{position:relative;background-color:var(--color-main-background);white-space:normal}.avatardiv[data-v-786083b4]:not(.avatardiv--unknown){background-color:var(--color-main-background)!important;box-shadow:0 0 5px #0000000d inset}.avatardiv--with-menu[data-v-786083b4]{cursor:pointer}.avatardiv--with-menu .action-item[data-v-786083b4]{position:absolute;top:0;inset-inline-start:0}.avatardiv--with-menu[data-v-786083b4] .action-item__menutoggle{cursor:pointer;opacity:0}.avatardiv--with-menu[data-v-786083b4]:focus-within .action-item__menutoggle,.avatardiv--with-menu[data-v-786083b4]:hover .action-item__menutoggle,.avatardiv--with-menu.avatardiv--with-menu-loading[data-v-786083b4] .action-item__menutoggle{opacity:1}.avatardiv--with-menu:focus-within img[data-v-786083b4],.avatardiv--with-menu:hover img[data-v-786083b4],.avatardiv--with-menu.avatardiv--with-menu-loading img[data-v-786083b4]{opacity:.3}.avatardiv--with-menu[data-v-786083b4] .action-item__menutoggle,.avatardiv--with-menu img[data-v-786083b4]{transition:opacity var(--animation-quick)}.avatardiv--with-menu[data-v-786083b4] .button-vue,.avatardiv--with-menu[data-v-786083b4] .button-vue__icon{height:var(--avatar-size);min-height:var(--avatar-size);width:var(--avatar-size)!important;min-width:var(--avatar-size)}.avatardiv--with-menu[data-v-786083b4]>.button-vue,.avatardiv--with-menu[data-v-786083b4]>.action-item .button-vue{--button-radius: calc(var(--avatar-size) / 2)}.avatardiv .avatardiv__initials-wrapper[data-v-786083b4]{display:block;height:var(--avatar-size);width:var(--avatar-size);background-color:var(--color-main-background);border-radius:calc(var(--avatar-size) / 2)}.avatardiv .avatardiv__initials-wrapper .avatardiv__initials[data-v-786083b4]{position:absolute;top:0;inset-inline-start:0;display:block;width:100%;text-align:center;font-weight:400}.avatardiv img[data-v-786083b4]{width:100%;height:100%;object-fit:cover}.avatardiv .material-design-icon[data-v-786083b4]{width:var(--avatar-size);height:var(--avatar-size)}.avatardiv .avatardiv__user-status[data-v-786083b4]{--avatar-status-size-orbital: calc(var(--avatar-size) * (1 - 1 / sqrt(2)));--avatar-status-size-min: var(--font-size-small);--avatar-status-size: max(var(--avatar-status-size-orbital), var(--avatar-status-size-min));box-sizing:border-box;position:absolute;inset-inline-end:0;inset-block-end:0;height:var(--avatar-status-size);width:var(--avatar-status-size);line-height:1;font-size:calc(var(--avatar-status-size) / 1.2);background-color:var(--color-main-background);background-repeat:no-repeat;background-size:var(--avatar-status-size);background-position:center;border-radius:50%;display:flex;align-items:center;justify-content:center}.acli:hover .avatardiv .avatardiv__user-status[data-v-786083b4]{border-color:var(--color-background-hover);background-color:var(--color-background-hover)}.acli.active .avatardiv .avatardiv__user-status[data-v-786083b4]{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}.avatardiv .avatardiv__user-status--icon[data-v-786083b4]{border:none;background-color:transparent}.avatardiv .popovermenu-wrapper[data-v-786083b4]{position:relative;display:inline-block}.avatar-class-icon[data-v-786083b4]{display:block;border-radius:calc(var(--avatar-size) / 2);background-color:var(--color-background-darker);height:100%}.material-design-icon[data-v-45238efd]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.mention-bubble--primary .mention-bubble__content[data-v-45238efd]{color:var(--color-primary-element-text);background-color:var(--color-primary-element)}.mention-bubble__wrapper[data-v-45238efd]{position:relative;max-width:150px;height:18px;vertical-align:text-bottom;display:inline-flex;align-items:center}.mention-bubble__content[data-v-45238efd]{display:inline-flex;overflow:hidden;align-items:center;max-width:100%;height:20px;-webkit-user-select:none;user-select:none;padding-inline:2px 6px;border-radius:10px;background-color:var(--color-background-dark)}.mention-bubble__icon[data-v-45238efd]{position:relative;width:16px;height:16px;border-radius:8px;background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:12px}.mention-bubble__icon--with-avatar[data-v-45238efd]{color:inherit;background-size:cover}.mention-bubble__title[data-v-45238efd]{overflow:hidden;margin-inline-start:2px;white-space:nowrap;text-overflow:ellipsis}.mention-bubble__title[data-v-45238efd]:before{content:attr(title)}.mention-bubble__select[data-v-45238efd]{position:absolute;z-index:-1;inset-inline-start:-100vw;width:1px;height:1px;overflow:hidden}.material-design-icon[data-v-009e879d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.user-status-icon[data-v-009e879d]{--user-status-color-online: #2D7B41;--user-status-color-busy: #DB0606;--user-status-color-away: #C88800;--user-status-color-offline: #6B6B6B;display:flex;justify-content:center;align-items:center}.user-status-icon--invisible[data-v-009e879d]{filter:var(--background-invert-if-dark)}.user-status-icon[data-v-009e879d] svg{width:100%;height:100%}._fadeTransition_13rtj_2{transition:all var(--animation-quick) ease}._fadeTransitionActive_13rtj_6{opacity:0;position:absolute}.material-design-icon[data-v-28ef52a4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-crumb[data-v-28ef52a4]{background-image:none;display:inline-flex;height:var(--default-clickable-area);padding:0}.vue-crumb[data-v-28ef52a4]:last-child{min-width:0}.vue-crumb:last-child .vue-crumb__separator[data-v-28ef52a4]{display:none}.vue-crumb--hidden[data-v-28ef52a4]{display:none}.vue-crumb__separator[data-v-28ef52a4]{padding:0;color:var(--color-text-maxcontrast)}.vue-crumb.vue-crumb--hovered[data-v-28ef52a4] .button-vue{background-color:var(--color-background-dark);color:var(--color-main-text)}.vue-crumb[data-v-28ef52a4]:not(:last-child) .button-vue{color:var(--color-text-maxcontrast)}.vue-crumb[data-v-28ef52a4]:not(:last-child) .button-vue:hover,.vue-crumb[data-v-28ef52a4]:not(:last-child) .button-vue:focus{background-color:var(--color-background-dark);color:var(--color-main-text)}.vue-crumb[data-v-28ef52a4]:not(:last-child) .button-vue__text{font-weight:400}.vue-crumb[data-v-28ef52a4] .button-vue__text{margin:0}.vue-crumb[data-v-28ef52a4]:not(.dropdown) .action-item{max-width:100%}.vue-crumb[data-v-28ef52a4]:not(.dropdown) .action-item .button-vue{padding:0 4px 0 16px;max-width:100%}.vue-crumb[data-v-28ef52a4]:not(.dropdown) .action-item .button-vue__wrapper{flex-direction:row-reverse}.vue-crumb[data-v-28ef52a4]:not(.dropdown) .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-background-dark);color:var(--color-main-text)}.material-design-icon[data-v-af2b1226]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.breadcrumb[data-v-af2b1226]{width:100%;flex-grow:1;display:inline-flex;align-items:center}.breadcrumb--collapsed[data-v-af2b1226] .vue-crumb:last-child{min-width:100px}.breadcrumb nav[data-v-af2b1226]{flex-shrink:1;min-width:0}.breadcrumb .breadcrumb__crumbs[data-v-af2b1226]{max-width:100%}.breadcrumb .breadcrumb__crumbs[data-v-af2b1226],.breadcrumb .breadcrumb__actions[data-v-af2b1226]{display:inline-flex}.material-design-icon[data-v-6f324274]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.nc-chip[data-v-6f324274]{--chip-size: 24px;--chip-radius: calc(var(--chip-size) / 2);height:var(--chip-size);max-width:fit-content;display:flex;flex-direction:row;align-items:center;border-radius:var(--chip-radius);background-color:var(--color-background-hover)}.nc-chip--primary[data-v-6f324274]{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.nc-chip--secondary[data-v-6f324274]{background-color:var(--color-primary-element-light);color:var(--color-primary-element-light-text)}.nc-chip--no-actions .nc-chip__text[data-v-6f324274]{padding-inline-end:calc(1.5 * var(--default-grid-baseline))}.nc-chip--no-icon .nc-chip__text[data-v-6f324274]{padding-inline-start:calc(1.5 * var(--default-grid-baseline))}.nc-chip__text[data-v-6f324274]{flex:1 auto;overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.nc-chip__icon[data-v-6f324274]{flex:0 0 var(--chip-size);margin-inline-end:var(--default-grid-baseline);line-height:1;display:flex;align-items:center;justify-content:center;overflow:hidden;height:var(--chip-size);width:var(--chip-size)}.nc-chip__actions[data-v-6f324274]{flex:0 0 var(--chip-size);--default-clickable-area: var(--chip-size);--border-radius-element: var(--chip-radius)}.material-design-icon[data-v-52d18b4a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.fade-enter-active[data-v-52d18b4a],.fade-leave-active[data-v-52d18b4a]{transition:opacity .3s ease}.fade-enter[data-v-52d18b4a],.fade-leave-to[data-v-52d18b4a]{opacity:0}.linked-icons[data-v-52d18b4a]{display:flex}.linked-icons img[data-v-52d18b4a]{padding:12px;height:var(--default-clickable-area);display:block;background-repeat:no-repeat;background-position:center;opacity:.7}.linked-icons img[data-v-52d18b4a]:hover{opacity:1}.popovermenu[data-v-52d18b4a]{display:none}.popovermenu.open[data-v-52d18b4a]{display:block}li.collection-list-item[data-v-52d18b4a]{flex-wrap:wrap;height:auto;cursor:pointer;margin-bottom:0!important}li.collection-list-item .collection-avatar[data-v-52d18b4a]{margin-top:0}li.collection-list-item form[data-v-52d18b4a],li.collection-list-item .collection-item-name[data-v-52d18b4a]{flex-basis:10%;flex-grow:1;display:flex}li.collection-list-item .collection-item-name[data-v-52d18b4a]{padding:12px 9px}li.collection-list-item input[data-v-52d18b4a]{margin-top:4px;border-color:var(--color-border-maxcontrast)}li.collection-list-item input[type=text][data-v-52d18b4a]{flex-grow:1}li.collection-list-item .error[data-v-52d18b4a],li.collection-list-item .resource-list-details[data-v-52d18b4a]{flex-basis:100%;width:100%}li.collection-list-item .resource-list-details li[data-v-52d18b4a]{display:flex;margin-inline-start:var(--default-clickable-area);border-radius:3px;cursor:pointer}li.collection-list-item .resource-list-details li[data-v-52d18b4a]:hover{background-color:var(--color-background-dark)}li.collection-list-item .resource-list-details li a[data-v-52d18b4a]{flex-grow:1;padding:3px;max-width:calc(100% - 30px);display:flex}li.collection-list-item .resource-list-details span[data-v-52d18b4a]{display:inline-block;vertical-align:top;margin-inline-end:10px}li.collection-list-item .resource-list-details span.resource-name[data-v-52d18b4a]{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top;white-space:nowrap;flex-grow:1;padding:4px}li.collection-list-item .resource-list-details img[data-v-52d18b4a]{width:24px;height:24px}li.collection-list-item .resource-list-details .icon-close[data-v-52d18b4a]{opacity:.7}li.collection-list-item .resource-list-details .icon-close[data-v-52d18b4a]:hover,li.collection-list-item .resource-list-details .icon-close[data-v-52d18b4a]:focus{opacity:1}.should-shake[data-v-52d18b4a]{animation:shake-52d18b4a .6s 1 linear}@keyframes shake-52d18b4a{0%{transform:translate(15px)}20%{transform:translate(-15px)}40%{transform:translate(7px)}60%{transform:translate(-7px)}80%{transform:translate(3px)}to{transform:translate(0)}}.material-design-icon[data-v-d175e795]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.collection-list[data-v-d175e795] *{box-sizing:border-box}.collection-list>li[data-v-d175e795]{display:flex;align-items:center;gap:12px}.collection-list>li>.avatar[data-v-d175e795]{margin-top:0}#collection-select-container[data-v-d175e795]{display:flex;flex-direction:column}.v-select span.avatar[data-v-d175e795]{display:block;padding:16px;opacity:.7;background-repeat:no-repeat;background-position:center}.v-select span.avatar[data-v-d175e795]:hover{opacity:1}p.hint[data-v-d175e795]{z-index:1;margin-top:-16px;padding:8px;color:var(--color-text-maxcontrast);line-height:normal}div.avatar[data-v-d175e795]{width:32px;height:32px;margin:30px 0 0;padding:8px;background-color:var(--color-background-dark)}.icon-projects[data-v-d175e795]{display:block;padding:8px;background-repeat:no-repeat;background-position:center}.option__wrapper[data-v-d175e795]{display:flex}.option__wrapper .avatar[data-v-d175e795]{display:block;width:32px;height:32px;background-color:var(--color-background-darker)!important}.option__wrapper .option__title[data-v-d175e795]{padding:4px}.fade-enter-active[data-v-d175e795],.fade-leave-active[data-v-d175e795]{transition:opacity .5s}.fade-enter[data-v-d175e795],.fade-leave-to[data-v-d175e795]{opacity:0}body{--vs-search-input-color: var(--color-main-text);--vs-search-input-bg: var(--color-main-background);--vs-search-input-placeholder-color: var(--color-text-maxcontrast);--vs-font-size: var(--default-font-size);--vs-line-height: var(--default-line-height);--vs-state-disabled-bg: var(--color-background-hover);--vs-state-disabled-color: var(--color-text-maxcontrast);--vs-state-disabled-controls-color: var(--color-text-maxcontrast);--vs-state-disabled-cursor: not-allowed;--vs-disabled-bg: var(--color-background-hover);--vs-disabled-color: var(--color-text-maxcontrast);--vs-disabled-cursor: not-allowed;--vs-border-color: var(--color-border-maxcontrast);--vs-border-width: var(--border-width-input, 2px) !important;--vs-border-style: solid;--vs-border-radius: var(--border-radius-element);--vs-controls-color: var(--color-main-text);--vs-selected-bg: var(--color-background-hover);--vs-selected-color: var(--color-main-text);--vs-selected-border-color: var(--vs-border-color);--vs-selected-border-style: var(--vs-border-style);--vs-selected-border-width: var(--vs-border-width);--vs-dropdown-bg: var(--color-main-background);--vs-dropdown-color: var(--color-main-text);--vs-dropdown-z-index: 9999;--vs-dropdown-box-shadow: 0px 2px 2px 0px var(--color-box-shadow);--vs-dropdown-option-padding: 8px 20px;--vs-dropdown-option--active-bg: var(--color-background-hover);--vs-dropdown-option--active-color: var(--color-main-text);--vs-dropdown-option--kb-focus-box-shadow: inset 0px 0px 0px 2px var(--vs-border-color);--vs-dropdown-option--deselect-bg: var(--color-error);--vs-dropdown-option--deselect-color: #fff;--vs-transition-duration: 0ms;--vs-actions-padding: 0 8px 0 4px}.v-select.select{min-height:var(--default-clickable-area);min-width:260px;margin:0 0 var(--default-grid-baseline)}.v-select.select.vs--open{--vs-border-width: var(--border-width-input-focused, 2px)}.v-select.select .select__label{display:block;margin-bottom:2px}.v-select.select .vs__selected{height:calc(var(--default-clickable-area) - 2 * var(--vs-border-width) - var(--default-grid-baseline));margin:calc(var(--default-grid-baseline) / 2);padding-block:0;padding-inline:12px 8px;border-radius:16px!important;background:var(--color-primary-element-light);border:none}.v-select.select.vs--open .vs__selected:first-of-type{margin-inline-start:calc(var(--default-grid-baseline) / 2 - (var(--border-width-input-focused, 2px) - var(--border-width-input, 2px)))!important}.v-select.select .vs__search{text-overflow:ellipsis;color:var(--color-main-text);min-height:unset!important;height:calc(var(--default-clickable-area) - 2 * var(--vs-border-width))!important}.v-select.select .vs__search::placeholder{color:var(--color-text-maxcontrast)}.v-select.select .vs__search,.v-select.select .vs__search:focus{margin:0}.v-select.select .vs__dropdown-toggle{position:relative;max-height:100px;padding:0;overflow-y:auto}.v-select.select .vs__actions{position:sticky;top:0}.v-select.select .vs__clear{margin-inline-end:2px}.v-select.select.vs--open .vs__dropdown-toggle{border-width:var(--border-width-input-focused);outline:2px solid var(--color-main-background);border-color:var(--color-main-text);border-bottom-color:transparent}.v-select.select:not(.vs--disabled,.vs--open) .vs__dropdown-toggle:hover{outline:2px solid var(--color-main-background);border-color:var(--color-main-text)}.v-select.select.vs--disabled .vs__search,.v-select.select.vs--disabled .vs__selected{color:var(--color-text-maxcontrast)}.v-select.select.vs--disabled .vs__clear,.v-select.select.vs--disabled .vs__deselect{display:none}.v-select.select--no-wrap .vs__selected-options{flex-wrap:nowrap;overflow:auto;min-width:unset}.v-select.select--no-wrap .vs__selected-options .vs__selected{min-width:unset}.v-select.select--drop-up.vs--open .vs__dropdown-toggle{border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);border-top-color:transparent;border-bottom-color:var(--color-main-text)}.v-select.select .vs__selected-options{min-height:calc(var(--default-clickable-area) - 2 * var(--vs-border-width))}.v-select.select .vs__selected-options .vs__selected~.vs__search[readonly]{position:absolute}.v-select.select .vs__selected-options{padding:0 5px}.v-select.select.vs--single.vs--loading .vs__selected,.v-select.select.vs--single.vs--open .vs__selected{max-width:100%;opacity:1;color:var(--color-text-maxcontrast)}.v-select.select.vs--single .vs__selected-options{flex-wrap:nowrap}.v-select.select.vs--single .vs__selected{background:unset!important}.vs__dropdown-menu{border-width:var(--border-width-input-focused)!important;border-color:var(--color-main-text)!important;outline:none!important;box-shadow:-2px 0 0 var(--color-main-background),0 2px 0 var(--color-main-background),2px 0 0 var(--color-main-background),!important;padding:4px!important}.vs__dropdown-menu--floating{width:max-content;position:absolute;top:0;inset-inline-start:0}.vs__dropdown-menu--floating-placement-top{border-radius:var(--vs-border-radius) var(--vs-border-radius) 0 0!important;border-top-style:var(--vs-border-style)!important;border-bottom-style:none!important;box-shadow:0 -2px 0 var(--color-main-background),-2px 0 0 var(--color-main-background),2px 0 0 var(--color-main-background),!important}.vs__dropdown-menu .vs__dropdown-option{border-radius:6px!important}.vs__dropdown-menu .vs__no-options{color:var(--color-text-maxcontrast)!important}.material-design-icon[data-v-a612f185]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.name-parts[data-v-a612f185]{display:flex;max-width:100%;cursor:inherit}.name-parts__first[data-v-a612f185]{overflow:hidden;text-overflow:ellipsis}.name-parts__first[data-v-a612f185],.name-parts__last[data-v-a612f185]{white-space:pre;cursor:inherit}.name-parts__first strong[data-v-a612f185],.name-parts__last strong[data-v-a612f185]{font-weight:700}:root{--vs-colors--lightest: rgba(60, 60, 60, .26);--vs-colors--light: rgba(60, 60, 60, .5);--vs-colors--dark: #333;--vs-colors--darkest: rgba(0, 0, 0, .15);--vs-search-input-color: inherit;--vs-search-input-placeholder-color: inherit;--vs-font-size: 1rem;--vs-line-height: 1.4;--vs-state-disabled-bg: rgb(248, 248, 248);--vs-state-disabled-color: var(--vs-colors--light);--vs-state-disabled-controls-color: var(--vs-colors--light);--vs-state-disabled-cursor: not-allowed;--vs-border-color: var(--vs-colors--lightest);--vs-border-width: 1px;--vs-border-style: solid;--vs-border-radius: 4px;--vs-actions-padding: 4px 6px 0 3px;--vs-controls-color: var(--vs-colors--light);--vs-controls-size: 1;--vs-controls--deselect-text-shadow: 0 1px 0 #fff;--vs-selected-bg: #f0f0f0;--vs-selected-color: var(--vs-colors--dark);--vs-selected-border-color: var(--vs-border-color);--vs-selected-border-style: var(--vs-border-style);--vs-selected-border-width: var(--vs-border-width);--vs-dropdown-bg: #fff;--vs-dropdown-color: inherit;--vs-dropdown-z-index: 1000;--vs-dropdown-min-width: 160px;--vs-dropdown-max-height: 350px;--vs-dropdown-box-shadow: 0px 3px 6px 0px var(--vs-colors--darkest);--vs-dropdown-option-bg: #000;--vs-dropdown-option-color: var(--vs-dropdown-color);--vs-dropdown-option-padding: 3px 20px;--vs-dropdown-option--active-bg: #5897fb;--vs-dropdown-option--active-color: #fff;--vs-dropdown-option--deselect-bg: #fb5858;--vs-dropdown-option--deselect-color: #fff;--vs-transition-timing-function: cubic-bezier(1, -.115, .975, .855);--vs-transition-duration: .15s}.v-select{position:relative;font-family:inherit}.v-select,.v-select *{box-sizing:border-box}:root{--vs-transition-timing-function: cubic-bezier(1, .5, .8, 1);--vs-transition-duration: .15s}@-webkit-keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vs__fade-enter-active,.vs__fade-leave-active{pointer-events:none;transition:opacity var(--vs-transition-duration) var(--vs-transition-timing-function)}.vs__fade-enter,.vs__fade-leave-to{opacity:0}:root{--vs-disabled-bg: var(--vs-state-disabled-bg);--vs-disabled-color: var(--vs-state-disabled-color);--vs-disabled-cursor: var(--vs-state-disabled-cursor)}.vs--disabled .vs__dropdown-toggle,.vs--disabled .vs__clear,.vs--disabled .vs__search,.vs--disabled .vs__selected,.vs--disabled .vs__open-indicator{cursor:var(--vs-disabled-cursor);background-color:var(--vs-disabled-bg)}.v-select[dir=rtl] .vs__actions{padding:0 3px 0 6px}.v-select[dir=rtl] .vs__clear{margin-left:6px;margin-right:0}.v-select[dir=rtl] .vs__deselect{margin-left:0;margin-right:2px}.v-select[dir=rtl] .vs__dropdown-menu{text-align:right}.vs__dropdown-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;padding:0 0 4px;background:none;border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:var(--vs-border-radius);white-space:normal}.vs__selected-options{display:flex;flex-basis:100%;flex-grow:1;flex-wrap:wrap;padding:0 2px;position:relative}.vs__actions{display:flex;align-items:center;padding:var(--vs-actions-padding)}.vs--searchable .vs__dropdown-toggle{cursor:text}.vs--unsearchable .vs__dropdown-toggle{cursor:pointer}.vs--open .vs__dropdown-toggle{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.vs__open-indicator{fill:var(--vs-controls-color);transform:scale(var(--vs-controls-size));transition:transform var(--vs-transition-duration) var(--vs-transition-timing-function);transition-timing-function:var(--vs-transition-timing-function)}.vs--open .vs__open-indicator{transform:rotate(180deg) scale(var(--vs-controls-size))}.vs--loading .vs__open-indicator{opacity:0}.vs__clear{fill:var(--vs-controls-color);padding:0;border:0;background-color:transparent;cursor:pointer;margin-right:8px}.vs__dropdown-menu{display:block;box-sizing:border-box;position:absolute;top:calc(100% - var(--vs-border-width));left:0;z-index:var(--vs-dropdown-z-index);padding:5px 0;margin:0;width:100%;max-height:var(--vs-dropdown-max-height);min-width:var(--vs-dropdown-min-width);overflow-y:auto;box-shadow:var(--vs-dropdown-box-shadow);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-top-style:none;border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);text-align:left;list-style:none;background:var(--vs-dropdown-bg);color:var(--vs-dropdown-color)}.vs__no-options{text-align:center}.vs__dropdown-option{line-height:1.42857143;display:block;padding:var(--vs-dropdown-option-padding);clear:both;color:var(--vs-dropdown-option-color);white-space:nowrap;cursor:pointer}.vs__dropdown-option--highlight{background:var(--vs-dropdown-option--active-bg);color:var(--vs-dropdown-option--active-color)}.vs__dropdown-option--deselect{background:var(--vs-dropdown-option--deselect-bg);color:var(--vs-dropdown-option--deselect-color)}.vs__dropdown-option--disabled{background:var(--vs-state-disabled-bg);color:var(--vs-state-disabled-color);cursor:var(--vs-state-disabled-cursor)}.vs__selected{display:flex;align-items:center;background-color:var(--vs-selected-bg);border:var(--vs-selected-border-width) var(--vs-selected-border-style) var(--vs-selected-border-color);border-radius:var(--vs-border-radius);color:var(--vs-selected-color);line-height:var(--vs-line-height);margin:4px 2px 0;padding:0 .25em;z-index:0}.vs__deselect{display:inline-flex;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin-left:4px;padding:0;border:0;cursor:pointer;background:none;fill:var(--vs-controls-color);text-shadow:var(--vs-controls--deselect-text-shadow)}.vs--single .vs__selected{background-color:transparent;border-color:transparent}.vs--single.vs--open .vs__selected,.vs--single.vs--loading .vs__selected{position:absolute;opacity:.4}.vs--single.vs--searching .vs__selected{display:none}.vs__search::-webkit-search-cancel-button{display:none}.vs__search::-webkit-search-decoration,.vs__search::-webkit-search-results-button,.vs__search::-webkit-search-results-decoration,.vs__search::-ms-clear{display:none}.vs__search,.vs__search:focus{color:var(--vs-search-input-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:var(--vs-line-height);font-size:var(--vs-font-size);border:1px solid transparent;border-left:none;outline:none;margin:4px 0 0;padding:0 7px;background:none;box-shadow:none;width:0;max-width:100%;flex-grow:1;z-index:1}.vs__search::-moz-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search::placeholder{color:var(--vs-search-input-placeholder-color)}.vs--unsearchable .vs__search{opacity:1}.vs--unsearchable:not(.vs--disabled) .vs__search{cursor:pointer}.vs--single.vs--searching:not(.vs--open):not(.vs--loading) .vs__search{opacity:.2}.vs__spinner{align-self:center;opacity:0;font-size:5px;text-indent:-9999em;overflow:hidden;border-top:.9em solid rgba(100,100,100,.1);border-right:.9em solid rgba(100,100,100,.1);border-bottom:.9em solid rgba(100,100,100,.1);border-left:.9em solid rgba(60,60,60,.45);transform:translateZ(0) scale(var(--vs-controls--spinner-size, var(--vs-controls-size)));-webkit-animation:vSelectSpinner 1.1s infinite linear;animation:vSelectSpinner 1.1s infinite linear;transition:opacity .1s}.vs__spinner,.vs__spinner:after{border-radius:50%;width:5em;height:5em;transform:scale(var(--vs-controls--spinner-size, var(--vs-controls-size)))}.vs--loading .vs__spinner{opacity:1}.material-design-icon[data-v-b2cb1a99]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.color-picker[data-v-b2cb1a99]{display:flex;overflow:hidden;align-content:flex-end;flex-direction:column;justify-content:space-between;padding:var(--border-radius-element);min-width:calc(4 * var(--default-clickable-area) + 2 * var(--border-radius-element))}.color-picker--clearable[data-v-b2cb1a99]{min-width:calc(5 * var(--default-clickable-area) + 2 * var(--border-radius-element))}.color-picker--advanced-fields[data-v-b2cb1a99]{min-width:264px}.color-picker__clear[data-v-b2cb1a99]{color:var(--color-main-text)}.color-picker__clear[data-v-b2cb1a99]:hover:not(:has(:checked)){color:var(--color-text-maxcontrast)}.color-picker__simple[data-v-b2cb1a99]{display:grid;grid-template-columns:repeat(auto-fit,var(--default-clickable-area));grid-auto-rows:var(--default-clickable-area)}.color-picker__simple-color-circle[data-v-b2cb1a99]{display:flex;align-items:center;justify-content:center;width:calc(var(--default-clickable-area) - 10px);height:calc(var(--default-clickable-area) - 10px);min-height:calc(var(--default-clickable-area) - 10px);margin:auto;padding:0;color:#fff;border:1px solid rgba(0,0,0,.25);border-radius:50%;font-size:16px}.color-picker__simple-color-circle[data-v-b2cb1a99]:focus-within{outline:2px solid var(--color-main-text)}.color-picker__simple-color-circle[data-v-b2cb1a99]:hover{opacity:.6}.color-picker__simple-color-circle--active[data-v-b2cb1a99]{width:calc(var(--default-clickable-area) - 6px);height:calc(var(--default-clickable-area) - 6px);min-height:calc(var(--default-clickable-area) - 6px);transition:all .1s ease-in-out;opacity:1!important}.color-picker__advanced[data-v-b2cb1a99]{box-shadow:none!important}.color-picker__navigation[data-v-b2cb1a99]{display:flex;flex-direction:row;gap:var(--default-grid-baseline);justify-content:space-between;margin-top:calc(2 * var(--default-grid-baseline))}[data-v-b2cb1a99] .vc-chrome{width:unset;background-color:var(--color-main-background)}[data-v-b2cb1a99] .vc-chrome-color-wrap{width:30px;height:30px}[data-v-b2cb1a99] .vc-chrome-active-color{border-radius:17px}[data-v-b2cb1a99] .vc-chrome-body{padding:14px 0 0;background-color:var(--color-main-background)}[data-v-b2cb1a99] .vc-chrome-body .vc-input__input{--input-border-radius: var(--border-radius-element);--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));width:100%;height:var(--default-clickable-area);margin:0;padding-inline:calc(var(--border-radius-element) + var(--input-border-width-offset));padding-block:var(--input-border-width-offset);border:var(--border-width-input, 2px) solid var(--color-border-maxcontrast);border-radius:var(--input-border-radius);font-size:var(--default-font-size);color:var(--color-main-text);box-shadow:none}[data-v-b2cb1a99] .vc-chrome-body .vc-input__input:active:not([disabled]),[data-v-b2cb1a99] .vc-chrome-body .vc-input__input:hover:not([disabled]),[data-v-b2cb1a99] .vc-chrome-body .vc-input__input:focus:not([disabled]){--input-border-width-offset: 0px;border-color:var(--color-main-text);border-width:var(--border-width-input-focused, 2px);box-shadow:0 0 0 2px var(--color-main-background)!important}[data-v-b2cb1a99] .vc-chrome-body .vc-input__input:active:not([disabled])+.vc-input__label,[data-v-b2cb1a99] .vc-chrome-body .vc-input__input:hover:not([disabled])+.vc-input__label,[data-v-b2cb1a99] .vc-chrome-body .vc-input__input:focus:not([disabled])+.vc-input__label{color:var(--color-main-text)}[data-v-b2cb1a99] .vc-chrome-body .vc-input__label{position:absolute;inset-inline:var(--border-width-input-focused, 2px);inset-block-start:calc(-1.5 * var(--font-size-small, 13px) / 2);max-width:fit-content;margin-inline:calc(var(--border-radius-element) - var(--default-grid-baseline));margin-block:0;padding-inline:var(--default-grid-baseline);font-family:var(--font-face);font-size:var(--font-size-small, 13px);line-height:1.5;font-weight:500;color:var(--color-text-maxcontrast);background-color:var(--color-main-background);pointer-events:none}[data-v-b2cb1a99] .vc-chrome-toggle-btn{display:flex;justify-content:center;align-items:center;width:var(--default-clickable-area);height:var(--default-clickable-area);margin-inline-start:6px;filter:var(--background-invert-if-dark)}[data-v-b2cb1a99] .vc-chrome-toggle-icon{width:24px;height:24px;margin:0}[data-v-b2cb1a99] .vc-chrome-toggle-icon-highlight{width:var(--default-clickable-area);height:var(--default-clickable-area);inset:0}[data-v-b2cb1a99] .vc-chrome-saturation-wrap{border-radius:3px}[data-v-b2cb1a99] .vc-chrome-saturation-circle{width:20px;height:20px}.slide-enter-from[data-v-b2cb1a99]{transform:translate(-50%);opacity:0}.slide-enter-to[data-v-b2cb1a99],.slide-leave-from[data-v-b2cb1a99]{transform:translate(0);opacity:1}.slide-leave-to[data-v-b2cb1a99]{transform:translate(-50%);opacity:0}.slide-enter-active[data-v-b2cb1a99],.slide-leave-active[data-v-b2cb1a99]{transition:all 50ms ease-in-out}#skip-actions.vue-skip-actions:focus-within{top:0!important;inset-inline-start:0!important;width:100vw;height:100vh;padding:var(--body-container-margin)!important;-webkit-backdrop-filter:brightness(50%);backdrop-filter:brightness(50%)}.material-design-icon[data-v-d9b0d7e8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-skip-actions__container[data-v-d9b0d7e8]{background-color:var(--color-main-background);border-radius:var(--border-radius-element);padding:22px}.vue-skip-actions__headline[data-v-d9b0d7e8]{font-weight:700;font-size:20px;line-height:30px;margin-bottom:12px}.vue-skip-actions__buttons[data-v-d9b0d7e8]{display:flex;flex-wrap:wrap;gap:12px}.vue-skip-actions__buttons[data-v-d9b0d7e8]>*{flex:1 0 fit-content}.vue-skip-actions__image[data-v-d9b0d7e8]{margin-top:12px}.vue-skip-actions__image[data-v-d9b0d7e8]:dir(rtl){transform:rotateY(180deg)}.content[data-v-d9b0d7e8]{display:flex;width:calc(100% - var(--body-container-margin) * 2);border-radius:var(--body-container-radius);height:var(--body-height);overflow:hidden;padding:0}.content[data-v-d9b0d7e8]:not(.with-sidebar--full){position:fixed}.content[data-v-d9b0d7e8],.content[data-v-d9b0d7e8] *{box-sizing:border-box}.material-design-icon[data-v-36ffc13f]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.counter-bubble__counter[data-v-36ffc13f]{--counter-bubble-height: 22px;font-size:var(--font-size-small, 13px);overflow:hidden;width:fit-content;min-width:var(--counter-bubble-height);text-align:center;line-height:var(--counter-bubble-height);padding:0 calc(1.5 * var(--default-grid-baseline));border-radius:.5lh;background-color:var(--color-primary-element-light);font-weight:700;color:var(--color-primary-element-light-text)}.counter-bubble__counter .active[data-v-36ffc13f]{color:var(--color-main-background);background-color:var(--color-primary-element-light)}.counter-bubble__counter--highlighted[data-v-36ffc13f]{color:var(--color-primary-element-text);background-color:var(--color-primary-element)}.counter-bubble__counter--highlighted.active[data-v-36ffc13f]{color:var(--color-primary-element);background-color:var(--color-main-background)}.counter-bubble__counter--outlined[data-v-36ffc13f]{color:var(--color-primary-element);background:transparent;box-shadow:inset 0 0 0 2px}.counter-bubble__counter--outlined.active[data-v-36ffc13f]{color:var(--color-main-background);box-shadow:inset 0 0 0 2px}.material-design-icon[data-v-b74472e8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.dashboard-widget[data-v-b74472e8] .empty-content{text-align:center;padding-top:5vh}.dashboard-widget[data-v-b74472e8] .empty-content.half-screen{padding-top:0;margin-bottom:1vh}.more[data-v-b74472e8]{display:block;text-align:center;color:var(--color-text-maxcontrast);line-height:60px;cursor:pointer}.more[data-v-b74472e8]:hover,.more[data-v-b74472e8]:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-element);color:var(--color-main-text)}.item-list__entry[data-v-b74472e8]{display:flex;align-items:flex-start;padding:8px}.item-list__entry .item-avatar[data-v-b74472e8]{position:relative;margin-block:auto;background-color:var(--color-background-dark)!important}.item-list__entry .item__details[data-v-b74472e8]{padding-inline-start:8px;max-height:var(--default-clickable-area);flex-grow:1;overflow:hidden;display:flex;flex-direction:column}.item-list__entry .item__details h3[data-v-b74472e8],.item-list__entry .item__details .message[data-v-b74472e8]{white-space:nowrap;background-color:var(--color-background-dark)}.item-list__entry .item__details h3[data-v-b74472e8]{font-size:100%;margin:0}.item-list__entry .item__details .message[data-v-b74472e8]{width:80%;height:15px;margin-top:5px}.material-design-icon[data-v-c033ba26]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.item-list__entry[data-v-c033ba26]{display:flex;align-items:center;position:relative;padding:8px}.item-list__entry[data-v-c033ba26]:hover,.item-list__entry[data-v-c033ba26]:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-element)}.item-list__entry .item-avatar[data-v-c033ba26]{position:relative;margin-top:auto;margin-bottom:auto}.item-list__entry .item__details[data-v-c033ba26]{padding-inline-start:8px;max-height:fit-content;flex-grow:1;overflow:hidden;display:flex;flex-direction:column;justify-content:center;min-height:var(--default-clickable-area)}.item-list__entry .item__details h3[data-v-c033ba26],.item-list__entry .item__details .message[data-v-c033ba26]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item-list__entry .item__details .message span[data-v-c033ba26]{width:10px;display:inline-block;margin-bottom:-3px}.item-list__entry .item__details h3[data-v-c033ba26]{font-size:100%;margin:0}.item-list__entry .item__details .message[data-v-c033ba26]{width:100%;color:var(--color-text-maxcontrast)}.item-list__entry .item-icon[data-v-c033ba26]{position:relative;width:14px;height:14px;margin-top:25px;margin-inline:-10px -2px}.item-list__entry button.primary[data-v-c033ba26]{padding:21px;margin:0}.material-design-icon[data-v-02e90461]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-date-time-picker__wrapper[data-v-02e90461]{--dp-common-transition: all var(--animation-quick) ease-in;--dp-menu-padding: 6px 8px;--dp-animation-duration: var(--animation-quick);--dp-menu-appear-transition-timing: cubic-bezier(.4, 0, 1, 1);--dp-transition-timing: ease-out;--dp-action-row-transtion: all .2s ease-in;--dp-font-family: var(--font-face);--dp-border-radius: var(--border-radius-element);--dp-cell-border-radius: var(--border-radius-small);--dp-transition-length: 22px;--dp-transition-timing-general: var(--animation-quick);--dp-button-height: var(--default-clickable-area);--dp-month-year-row-height: var(--default-clickable-area);--dp-month-year-row-button-size: var(--clickable-area-small);--dp-button-icon-height: 20px;--dp-calendar-wrap-padding: 0 5px;--dp-cell-size: var(--default-clickable-area);--dp-cell-padding: 5px;--dp-common-padding: 10px;--dp-input-icon-padding: var(--default-clickable-area);--dp-input-padding: 6px 12px;--dp-menu-min-width: 260px;--dp-action-buttons-padding: 1px 6px;--dp-row-margin: 5px 0;--dp-calendar-header-cell-padding: .5rem;--dp-multi-calendars-spacing: 10px;--dp-overlay-col-padding: 3px;--dp-time-inc-dec-button-size: var(--default-clickable-area);--dp-font-size: 1rem;--dp-preview-font-size: var(--font-size-small);--dp-time-font-size: 2rem;--dp-action-button-height: var(--clickable-area-small);--dp-action-row-padding: 8px;--dp-direction: ltr}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__input_wrap{position:relative;width:100%;box-sizing:unset}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__input_wrap:focus{border-color:var(--dp-border-color-hover);outline:none}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__input_valid{box-shadow:0 0 var(--dp-border-radius) var(--dp-success-color);border-color:var(--dp-success-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__input_valid:hover{border-color:var(--dp-success-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__input_invalid{box-shadow:0 0 var(--dp-border-radius) var(--dp-danger-color);border-color:var(--dp-danger-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__input_invalid:hover{border-color:var(--dp-danger-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__input{background-color:var(--dp-background-color);border-radius:var(--dp-border-radius);font-family:var(--dp-font-family);border:1px solid var(--dp-border-color);outline:none;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%;font-size:var(--dp-font-size);line-height:calc(var(--dp-font-size) * 1.5);padding:var(--dp-input-padding);color:var(--dp-text-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__input::placeholder{opacity:.7}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__input:hover:not(.dp__input_focus){border-color:var(--dp-border-color-hover)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__input_reg{caret-color:#0000}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__input_focus{border-color:var(--dp-border-color-focus)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__disabled{background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__disabled::placeholder{color:var(--dp-disabled-color-text)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__input_icons{display:inline-block;width:var(--dp-font-size);height:var(--dp-font-size);stroke-width:0;font-size:var(--dp-font-size);line-height:calc(var(--dp-font-size) * 1.5);padding:6px 12px;color:var(--dp-icon-color);box-sizing:content-box}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__input_icon{cursor:pointer;position:absolute;top:50%;inset-inline-start:0;transform:translateY(-50%);color:var(--dp-icon-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--clear-btn{position:absolute;top:50%;inset-inline-end:0;transform:translateY(-50%);cursor:pointer;color:var(--dp-icon-color);background:#0000;border:none;display:inline-flex;align-items:center;padding:0;margin:0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__input_icon_pad{padding-inline-start:var(--dp-input-icon-padding)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__menu{background:var(--dp-background-color);border-radius:var(--dp-border-radius);min-width:var(--dp-menu-min-width);font-family:var(--dp-font-family);font-size:var(--dp-font-size);-webkit-user-select:none;user-select:none;border:1px solid var(--dp-menu-border-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__menu:after{box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__menu:before{box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__menu:focus{border:1px solid var(--dp-menu-border-color);outline:none}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--menu-wrapper{position:absolute;z-index:99999}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__menu_inner{padding:var(--dp-menu-padding)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--menu--inner-stretched{padding:6px 0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__menu_index{z-index:99999}.vue-date-time-picker__wrapper[data-v-02e90461] .dp-menu-loading,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__menu_readonly,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__menu_disabled{position:absolute;inset:0;z-index:999999}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__menu_disabled{background:#ffffff80;cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__menu_readonly{background:#0000;cursor:default}.vue-date-time-picker__wrapper[data-v-02e90461] .dp-menu-loading{background:#ffffff80;cursor:default}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--menu-load-container{display:flex;height:100%;width:100%;justify-content:center;align-items:center}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--menu-loader{width:48px;height:48px;border:var(--dp-loader);border-bottom-color:#0000;border-radius:50%;display:inline-block;box-sizing:border-box;animation:dp-load-rotation-02e90461 1s linear infinite;position:absolute}@keyframes dp-load-rotation-02e90461{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__arrow_top{left:var(--dp-arrow-left);top:0;height:12px;width:12px;background-color:var(--dp-background-color);position:absolute;border-inline-end:1px solid var(--dp-menu-border-color);border-top:1px solid var(--dp-menu-border-color);transform:translate(-50%,-50%) rotate(-45deg)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__arrow_bottom{left:var(--dp-arrow-left);bottom:0;height:12px;width:12px;background-color:var(--dp-background-color);position:absolute;border-inline-end:1px solid var(--dp-menu-border-color);border-bottom:1px solid var(--dp-menu-border-color);transform:translate(-50%,50%) rotate(45deg)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__action_extra{text-align:center;padding:2px 0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--preset-dates{padding:5px;border-inline-end:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--preset-dates[data-dp-mobile],.vue-date-time-picker__wrapper[data-v-02e90461] .dp--preset-dates-collapsed{display:flex;align-self:center;border:none;overflow-x:auto;max-width:calc(var(--dp-menu-width) - var(--dp-action-row-padding) * 2)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__sidebar_left{padding:5px;border-inline-end:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__sidebar_right{padding:5px;margin-inline-end:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--preset-range{display:block;width:100%;padding:5px;text-align:left;white-space:nowrap;color:var(--dp-text-color);border-radius:var(--dp-border-radius);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--preset-range:hover{background-color:var(--dp-hover-color);color:var(--dp-hover-text-color);cursor:pointer}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--preset-range[data-dp-mobile]{border:1px solid var(--dp-border-color);margin:0 3px}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--preset-range[data-dp-mobile]:first-child{margin-left:0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--preset-range[data-dp-mobile]:last-child{margin-right:0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--preset-range-collapsed{border:1px solid var(--dp-border-color);margin:0 3px}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--preset-range-collapsed:first-child{margin-left:0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--preset-range-collapsed:last-child{margin-right:0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__menu_content_wrapper{display:flex}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__menu_content_wrapper[data-dp-mobile],.vue-date-time-picker__wrapper[data-v-02e90461] .dp--menu-content-wrapper-collapsed{flex-direction:column-reverse}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__calendar_header{position:relative;display:flex;justify-content:center;align-items:center;color:var(--dp-text-color);white-space:nowrap;font-weight:700}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__calendar_header_item{text-align:center;flex-grow:1;height:var(--dp-cell-size);padding:var(--dp-cell-padding);width:var(--dp-cell-size);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__calendar_row{display:flex;justify-content:center;align-items:center;margin:var(--dp-row-margin)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__calendar_item{text-align:center;flex-grow:1;box-sizing:border-box;color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__calendar{position:relative}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__calendar_header_cell{border-bottom:thin solid var(--dp-border-color);padding:var(--dp-calendar-header-cell-padding)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__cell_inner{display:flex;align-items:center;text-align:center;justify-content:center;border-radius:var(--dp-cell-border-radius);height:var(--dp-cell-size);padding:var(--dp-cell-padding);width:var(--dp-cell-size);border:1px solid rgba(0,0,0,0);box-sizing:border-box;position:relative}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__cell_inner:hover{transition:all .2s}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__cell_auto_range_start,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__date_hover_start:hover,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__range_start{border-end-end-radius:0;border-start-end-radius:0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__cell_auto_range_end,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__date_hover_end:hover,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__range_end{border-end-start-radius:0;border-start-start-radius:0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__range_end,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__range_start,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__active_date{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__date_hover_end:hover,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__date_hover_start:hover,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__date_hover:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__cell_offset{color:var(--dp-secondary-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__cell_disabled{color:var(--dp-secondary-color);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__range_between{background:var(--dp-range-between-dates-background-color);color:var(--dp-range-between-dates-text-color);border-radius:0;border:1px solid var(--dp-range-between-border-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__range_between_week{background:var(--dp-primary-color);color:var(--dp-primary-text-color);border-radius:0;border-top:1px solid var(--dp-primary-color);border-bottom:1px solid var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__today{border:1px solid var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__week_num{color:var(--dp-secondary-color);text-align:center}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__cell_auto_range{border-radius:0;border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__cell_auto_range_start{border-start-start-radius:var(--dp-cell-border-radius);border-end-start-radius:var(--dp-cell-border-radius);border-inline-start:1px dashed var(--dp-primary-color);border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__cell_auto_range_end{border-start-end-radius:var(--dp-cell-border-radius);border-end-end-radius:var(--dp-cell-border-radius);border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color);border-inline-end:1px dashed var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__calendar_header_separator{width:100%;height:1px;background:var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__calendar_next{margin-inline-start:var(--dp-multi-calendars-spacing)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__marker_line,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__marker_dot{height:5px;background-color:var(--dp-marker-color);position:absolute;bottom:0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__marker_dot{width:5px;border-radius:50%;left:50%;transform:translate(-50%)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__marker_line{width:100%;left:0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__marker_tooltip{position:absolute;border-radius:var(--dp-border-radius);background-color:var(--dp-tooltip-color);padding:5px;border:1px solid var(--dp-border-color);z-index:99999;box-sizing:border-box;cursor:default}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__tooltip_content{white-space:nowrap}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__tooltip_text{display:flex;align-items:center;flex-flow:row nowrap;color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__tooltip_mark{height:5px;width:5px;border-radius:50%;background-color:var(--dp-text-color);color:var(--dp-text-color);margin-inline-end:5px}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__arrow_bottom_tp{bottom:0;height:8px;width:8px;background-color:var(--dp-tooltip-color);position:absolute;border-inline-end:1px solid var(--dp-border-color);border-bottom:1px solid var(--dp-border-color);transform:translate(-50%,50%) rotate(45deg)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__instance_calendar{position:relative;width:100%}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__flex_display[data-dp-mobile],.vue-date-time-picker__wrapper[data-v-02e90461] .dp--flex-display-collapsed{flex-direction:column}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__cell_highlight{background-color:var(--dp-highlight-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__month_year_row{display:flex;align-items:center;height:var(--dp-month-year-row-height);color:var(--dp-text-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__inner_nav{display:flex;align-items:center;justify-content:center;cursor:pointer;height:var(--dp-month-year-row-button-size);width:var(--dp-month-year-row-button-size);color:var(--dp-icon-color);text-align:center;border-radius:50%}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__inner_nav svg{height:var(--dp-button-icon-height);width:var(--dp-button-icon-height)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__inner_nav:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-02e90461] [dir=rtl] .dp__inner_nav{transform:rotate(180deg)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__inner_nav_disabled:hover,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__inner_nav_disabled{background:var(--dp-disabled-color);color:var(--dp-disabled-color-text);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--year-select,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__month_year_select{text-align:center;cursor:pointer;height:var(--dp-month-year-row-height);display:flex;align-items:center;justify-content:center;border-radius:var(--dp-border-radius);box-sizing:border-box;color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--year-select:hover,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__month_year_select:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__month_year_select{width:50%}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--year-select{width:100%}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__month_year_wrap{display:flex;flex-direction:row;width:100%}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__year_disable_select{justify-content:space-around}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--header-wrap{display:flex;width:100%;flex-direction:column}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay{width:100%;background:var(--dp-background-color);transition:opacity 1s ease-out;z-index:99999;font-family:var(--dp-font-family);color:var(--dp-text-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--overlay-absolute{position:absolute;height:100%;top:0;left:0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--overlay-relative{position:relative}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay_container::-webkit-scrollbar-track{box-shadow:var(--dp-scroll-bar-background);background-color:var(--dp-scroll-bar-background)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay_container::-webkit-scrollbar{width:5px;background-color:var(--dp-scroll-bar-background)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay_container::-webkit-scrollbar-thumb{background-color:var(--dp-scroll-bar-color);border-radius:10px}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay:focus{border:none;outline:none}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__container_flex{display:flex}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__container_block{display:block}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay_container{flex-direction:column;overflow-y:auto;height:var(--dp-overlay-height)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_picker_overlay_container{height:100%}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay_row{padding:0;box-sizing:border-box;display:flex;margin-inline:auto;flex-wrap:wrap;max-width:100%;width:100%;align-items:center}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__flex_row{flex:1}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay_col{box-sizing:border-box;width:33%;padding:var(--dp-overlay-col-padding);white-space:nowrap}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay_cell_pad{padding:var(--dp-common-padding) 0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay_cell_active{cursor:pointer;border-radius:var(--dp-border-radius);text-align:center;background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay_cell{cursor:pointer;border-radius:var(--dp-border-radius);text-align:center}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay_cell:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__cell_in_between{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__over_action_scroll{right:5px;box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay_cell_disabled{cursor:not-allowed;background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay_cell_disabled:hover{background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay_cell_active_disabled{cursor:not-allowed;background:var(--dp-primary-disabled-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay_cell_active_disabled:hover{background:var(--dp-primary-disabled-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__btn,.vue-date-time-picker__wrapper[data-v-02e90461] .dp--qr-btn,.vue-date-time-picker__wrapper[data-v-02e90461] .dp--time-overlay-btn,.vue-date-time-picker__wrapper[data-v-02e90461] .dp--time-invalid{border:none;font:inherit;transition:var(--dp-common-transition);line-height:normal}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--year-mode-picker{display:flex;width:100%;align-items:center;justify-content:space-between;height:var(--dp-cell-size)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--tp-wrap{max-width:var(--dp-menu-min-width)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--tp-wrap[data-dp-mobile]{max-width:100%}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_input{width:100%;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;font-family:var(--dp-font-family);color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_col_reg_block{padding:0 20px}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_col_reg_inline{padding:0 10px}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_col_reg_with_button{padding:0 15px}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_col_reg_with_button[data-compact~=true]{padding:0 5px}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_col_sec{padding:0 10px}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_col_sec_with_button{padding:0 5px}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_col_sec_with_button[data-collapsed~=true]{padding:0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_col{text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_col_block{font-size:var(--dp-time-font-size)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_display_block{padding:0 3px}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_display_inline{padding:5px}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_picker_inline_container{display:flex;width:100%;justify-content:center}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__inc_dec_button{padding:5px;margin:0;height:var(--dp-time-inc-dec-button-size);width:var(--dp-time-inc-dec-button-size);display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:50%;color:var(--dp-icon-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__inc_dec_button svg{height:var(--dp-time-inc-dec-button-size);width:var(--dp-time-inc-dec-button-size)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__inc_dec_button:hover{background:var(--dp-hover-color);color:var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_display{cursor:pointer;color:var(--dp-text-color);border-radius:var(--dp-border-radius);display:flex;align-items:center;justify-content:center}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_display:hover:enabled{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__inc_dec_button_inline{width:100%;padding:0;height:8px;cursor:pointer;display:flex;align-items:center}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__inc_dec_button_disabled,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__inc_dec_button_disabled:hover{background:var(--dp-disabled-color);color:var(--dp-disabled-color-text);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__pm_am_button{background:var(--dp-primary-color);color:var(--dp-primary-text-color);border:none;padding:var(--dp-common-padding);border-radius:var(--dp-border-radius);cursor:pointer}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__pm_am_button[data-compact~=true]{padding:7px}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__tp_inline_btn_bar{width:100%;height:4px;background-color:var(--dp-secondary-color);transition:var(--dp-common-transition);border-collapse:collapse}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__tp_inline_btn_top:hover .dp__tp_btn_in_r{background-color:var(--dp-primary-color);transform:rotate(12deg) scale(1.15) translateY(-2px)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__tp_inline_btn_top:hover .dp__tp_btn_in_l,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__tp_inline_btn_bottom:hover .dp__tp_btn_in_r{background-color:var(--dp-primary-color);transform:rotate(-12deg) scale(1.15) translateY(-2px)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__tp_inline_btn_bottom:hover .dp__tp_btn_in_l{background-color:var(--dp-primary-color);transform:rotate(12deg) scale(1.15) translateY(-2px)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--time-overlay-btn{background:none}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--time-invalid{background-color:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__action_row{display:flex;align-items:center;width:100%;padding:var(--dp-action-row-padding);box-sizing:border-box;color:var(--dp-text-color);flex-flow:row nowrap}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__action_row svg{height:var(--dp-button-icon-height);width:auto}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__selection_preview{display:block;color:var(--dp-text-color);font-size:var(--dp-preview-font-size);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__action_buttons{display:flex;flex:0;white-space:nowrap;align-items:center;justify-content:flex-end;margin-inline-start:auto}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__action_button{display:inline-flex;align-items:center;background:#0000;border:1px solid rgba(0,0,0,0);padding:var(--dp-action-buttons-padding);line-height:var(--dp-action-button-height);margin-inline-start:3px;height:var(--dp-action-button-height);cursor:pointer;border-radius:var(--dp-border-radius);font-size:var(--dp-preview-font-size);font-family:var(--dp-font-family)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__action_cancel{color:var(--dp-text-color);border:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__action_cancel:hover{border-color:var(--dp-primary-color);transition:var(--dp-action-row-transtion)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__action_buttons .dp__action_select{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__action_buttons .dp__action_select:hover{background:var(--dp-primary-color);transition:var(--dp-action-row-transtion)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__action_buttons .dp__action_select:disabled{background:var(--dp-primary-disabled-color);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-02e90461] .dp-quarter-picker-wrap{display:flex;flex-direction:column;height:100%;min-width:var(--dp-menu-min-width)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--qr-btn-disabled{cursor:not-allowed;background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--qr-btn-disabled:hover{background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--qr-btn{width:100%;padding:var(--dp-common-padding)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--qr-btn:not(.dp--highlighted,.dp--qr-btn-active,.dp--qr-btn-disabled,.dp--qr-btn-between){background:none}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--qr-btn:hover:not(.dp--qr-btn-active,.dp--qr-btn-disabled){background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--quarter-items{display:flex;flex-direction:column;flex:1;width:100%;height:100%;justify-content:space-evenly}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--qr-btn-active{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--qr-btn-between{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-02e90461] :root{--dp-common-transition: all .1s ease-in;--dp-menu-padding: 6px 8px;--dp-animation-duration: .1s;--dp-menu-appear-transition-timing: cubic-bezier(.4, 0, 1, 1);--dp-transition-timing: ease-out;--dp-action-row-transtion: all .2s ease-in;--dp-font-family: -apple-system, blinkmacsystemfont, "Segoe UI", roboto, oxygen, ubuntu, cantarell, "Open Sans", "Helvetica Neue", sans-serif;--dp-border-radius: 4px;--dp-cell-border-radius: 4px;--dp-transition-length: 22px;--dp-transition-timing-general: .1s;--dp-button-height: 35px;--dp-month-year-row-height: 35px;--dp-month-year-row-button-size: 25px;--dp-button-icon-height: 20px;--dp-calendar-wrap-padding: 0 5px;--dp-cell-size: 35px;--dp-cell-padding: 5px;--dp-common-padding: 10px;--dp-input-icon-padding: 35px;--dp-input-padding: 6px 30px 6px 12px;--dp-menu-min-width: 260px;--dp-action-buttons-padding: 1px 6px;--dp-row-margin: 5px 0;--dp-calendar-header-cell-padding: .5rem;--dp-multi-calendars-spacing: 10px;--dp-overlay-col-padding: 3px;--dp-time-inc-dec-button-size: 32px;--dp-font-size: 1rem;--dp-preview-font-size: .8rem;--dp-time-font-size: 2rem;--dp-action-button-height: 22px;--dp-action-row-padding: 8px;--dp-direction: ltr}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__theme_dark{--dp-background-color: #212121;--dp-text-color: #fff;--dp-hover-color: #484848;--dp-hover-text-color: #fff;--dp-hover-icon-color: #959595;--dp-primary-color: #005cb2;--dp-primary-disabled-color: #61a8ea;--dp-primary-text-color: #fff;--dp-secondary-color: #a9a9a9;--dp-border-color: #2d2d2d;--dp-menu-border-color: #2d2d2d;--dp-border-color-hover: #aaaeb7;--dp-border-color-focus: #aaaeb7;--dp-disabled-color: #737373;--dp-disabled-color-text: #d0d0d0;--dp-scroll-bar-background: #212121;--dp-scroll-bar-color: #484848;--dp-success-color: #00701a;--dp-success-color-disabled: #428f59;--dp-icon-color: #959595;--dp-danger-color: #e53935;--dp-marker-color: #e53935;--dp-tooltip-color: #3e3e3e;--dp-highlight-color: rgb(0 92 178 / 20%);--dp-range-between-dates-background-color: var(--dp-hover-color, #484848);--dp-range-between-dates-text-color: var(--dp-hover-text-color, #fff);--dp-range-between-border-color: var(--dp-hover-color, #fff);--dp-loader: 5px solid #005cb2}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__theme_light{--dp-background-color: #fff;--dp-text-color: #212121;--dp-hover-color: #f3f3f3;--dp-hover-text-color: #212121;--dp-hover-icon-color: #959595;--dp-primary-color: #1976d2;--dp-primary-disabled-color: #6bacea;--dp-primary-text-color: #fff;--dp-secondary-color: #c0c4cc;--dp-border-color: #ddd;--dp-menu-border-color: #ddd;--dp-border-color-hover: #aaaeb7;--dp-border-color-focus: #aaaeb7;--dp-disabled-color: #f6f6f6;--dp-scroll-bar-background: #f3f3f3;--dp-scroll-bar-color: #959595;--dp-success-color: #76d275;--dp-success-color-disabled: #a3d9b1;--dp-icon-color: #959595;--dp-danger-color: #ff6f60;--dp-marker-color: #ff6f60;--dp-tooltip-color: #fafafa;--dp-disabled-color-text: #8e8e8e;--dp-highlight-color: rgb(25 118 210 / 10%);--dp-range-between-dates-background-color: var(--dp-hover-color, #f3f3f3);--dp-range-between-dates-text-color: var(--dp-hover-text-color, #212121);--dp-range-between-border-color: var(--dp-hover-color, #f3f3f3);--dp-loader: 5px solid #1976d2}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__flex{display:flex;align-items:center}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__btn{background:none}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__main{font-family:var(--dp-font-family);-webkit-user-select:none;user-select:none;box-sizing:border-box;position:relative;width:100%}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__main *{direction:var(--dp-direction, ltr)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__pointer{cursor:pointer}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__icon{stroke:currentcolor;fill:currentcolor}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__button{width:100%;text-align:center;color:var(--dp-icon-color);cursor:pointer;display:flex;align-items:center;place-content:center center;padding:var(--dp-common-padding);box-sizing:border-box;height:var(--dp-button-height)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__button.dp__overlay_action{position:absolute;bottom:0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__button:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__button svg{height:var(--dp-button-icon-height);width:auto}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__button_bottom{border-bottom-left-radius:var(--dp-border-radius);border-bottom-right-radius:var(--dp-border-radius)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__flex_display{display:flex}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__flex_display_with_input{flex-direction:column;align-items:flex-start}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__relative{position:relative}.vue-date-time-picker__wrapper[data-v-02e90461] .calendar-next-enter-active,.vue-date-time-picker__wrapper[data-v-02e90461] .calendar-next-leave-active,.vue-date-time-picker__wrapper[data-v-02e90461] .calendar-prev-enter-active,.vue-date-time-picker__wrapper[data-v-02e90461] .calendar-prev-leave-active{transition:all var(--dp-transition-timing-general) ease-out}.vue-date-time-picker__wrapper[data-v-02e90461] .calendar-next-enter-from{opacity:0;transform:translate(var(--dp-transition-length))}.vue-date-time-picker__wrapper[data-v-02e90461] .calendar-next-leave-to,.vue-date-time-picker__wrapper[data-v-02e90461] .calendar-prev-enter-from{opacity:0;transform:translate(calc(var(--dp-transition-length) * -1))}.vue-date-time-picker__wrapper[data-v-02e90461] .calendar-prev-leave-to{opacity:0;transform:translate(var(--dp-transition-length))}.vue-date-time-picker__wrapper[data-v-02e90461] .dp-menu-appear-bottom-enter-active,.vue-date-time-picker__wrapper[data-v-02e90461] .dp-menu-appear-bottom-leave-active,.vue-date-time-picker__wrapper[data-v-02e90461] .dp-menu-appear-top-enter-active,.vue-date-time-picker__wrapper[data-v-02e90461] .dp-menu-appear-top-leave-active,.vue-date-time-picker__wrapper[data-v-02e90461] .dp-slide-up-enter-active,.vue-date-time-picker__wrapper[data-v-02e90461] .dp-slide-up-leave-active,.vue-date-time-picker__wrapper[data-v-02e90461] .dp-slide-down-enter-active,.vue-date-time-picker__wrapper[data-v-02e90461] .dp-slide-down-leave-active{transition:all var(--dp-animation-duration) var(--dp-transition-timing)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp-menu-appear-top-enter-from,.vue-date-time-picker__wrapper[data-v-02e90461] .dp-menu-appear-top-leave-to,.vue-date-time-picker__wrapper[data-v-02e90461] .dp-slide-down-leave-to,.vue-date-time-picker__wrapper[data-v-02e90461] .dp-slide-up-enter-from{opacity:0;transform:translateY(var(--dp-transition-length))}.vue-date-time-picker__wrapper[data-v-02e90461] .dp-menu-appear-bottom-enter-from,.vue-date-time-picker__wrapper[data-v-02e90461] .dp-menu-appear-bottom-leave-to,.vue-date-time-picker__wrapper[data-v-02e90461] .dp-slide-down-enter-from,.vue-date-time-picker__wrapper[data-v-02e90461] .dp-slide-up-leave-to{opacity:0;transform:translateY(calc(var(--dp-transition-length) * -1))}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--arrow-btn-nav{transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--highlighted{background-color:var(--dp-highlight-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--hidden-el{visibility:hidden}.vue-date-time-picker__wrapper .vue-date-time-picker--clearable[data-v-02e90461] .dp__input{padding-inline-end:var(--default-clickable-area)}.vue-date-time-picker__wrapper .vue-date-time-picker__timezone[data-v-02e90461]{min-width:unset;width:100%}.vue-date-time-picker__wrapper[data-v-02e90461] .icon-vue{opacity:1!important}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--tp-wrap,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__action_extra{padding:var(--dp-menu-padding);padding-top:0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay.dp--overlay-absolute{padding:var(--dp-menu-padding)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__overlay.dp--overlay-absolute .dp__btn.dp__button.dp__button_bottom{inset-block-end:6px}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__btn.dp__button.dp__button_bottom,.vue-date-time-picker__wrapper[data-v-02e90461] .dp--tp-wrap .dp__button{width:100%}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__btn.dp__button.dp__overlay_action{width:calc(100% - 16px)}.vue-date-time-picker__wrapper[data-v-02e90461] input{padding-inline-start:var(--dp-input-icon-padding)!important}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__btn{margin:0}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__inner_nav{height:fit-content;width:fit-content}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__btn.dp__button.dp__button_bottom{color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--header-wrap .dp__btn:not(.dp__button_bottom),.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_col .dp__btn{background-color:var(--color-main-background)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--header-wrap .dp__btn:not(.dp__button_bottom):hover,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_col .dp__btn:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__month_year_select{flex:1}.vue-date-time-picker__wrapper[data-v-02e90461] .dp--time-overlay-btn{font-size:calc(2 * var(--default-font-size))!important}.vue-date-time-picker__wrapper[data-v-02e90461] .dp__time_input .dp__time_col_reg_block{padding:0 calc(4 * var(--default-grid-baseline))}.vue-date-time-picker__wrapper .vue-date-time-picker.dp__theme_dark[data-v-02e90461],.vue-date-time-picker__wrapper .vue-date-time-picker.dp__theme_light[data-v-02e90461],.vue-date-time-picker__wrapper[data-v-02e90461] .dp__theme_dark,.vue-date-time-picker__wrapper[data-v-02e90461] .dp__theme_light{--dp-background-color: var(--color-main-background);--dp-text-color: var(--color-main-text);--dp-hover-color: var(--color-primary-element-light-hover);--dp-hover-text-color: var(--color-primary-element-light-text);--dp-hover-icon-color: var(--color-primary-element-light-text);--dp-primary-color: var(--color-primary-element);--dp-primary-disabled-color: var(--color-primary-element-hover);--dp-primary-text-color: var(--color-primary-element-text);--dp-secondary-color: var(--color-text-maxcontrast);--dp-border-color: var(--color-border);--dp-menu-border-color: var(--color-border-dark);--dp-border-color-hover: var(--color-border-maxcontrast);--dp-border-color-focus: var(--color-border-maxcontrast);--dp-disabled-color: var(--color-background-dark);--dp-disabled-color-text: var(--color-text-maxcontrast);--dp-scroll-bar-background: var(--color-scrollbar);--dp-scroll-bar-color: var(--color-scrollbar);--dp-success-color: var(--color-success);--dp-success-color-disabled: var(--color-success-hover);--dp-icon-color: var(--color-main-text);--dp-danger-color: var(--color-error);--dp-marker-color: var(--color-text-error, var(--color-error));--dp-tooltip-color: var(--color-main-text);--dp-highlight-color: var(--color-main-text)}.material-design-icon[data-v-f2f99131]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart *{box-sizing:border-box;line-height:1.15}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart{font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;font-size:16px;display:flex;flex-direction:column;height:420px;color:#222427;border:1px solid #d9d9d9;border-radius:5px;background:#fff}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-emoji{padding:6px;position:relative;display:inline-block;font-size:0;border:none;background:none;box-shadow:none}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-emoji span{display:inline-block}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-preview-emoji .emoji-mart-emoji span{width:38px;height:38px;font-size:32px}.nc-emoji-picker-container[data-v-f2f99131] .emoji-type-native{font-family:"Segoe UI Emoji",Segoe UI Symbol,Segoe UI,"Apple Color Emoji",Twemoji Mozilla,"Noto Color Emoji",EmojiOne Color,"Android Emoji";word-break:keep-all}.nc-emoji-picker-container[data-v-f2f99131] .emoji-type-image{background-size:6100%}.nc-emoji-picker-container[data-v-f2f99131] .emoji-type-image.emoji-set-apple{background-image:url(https://unpkg.com/emoji-datasource-apple@15.0.1/img/apple/sheets-256/64.png)}.nc-emoji-picker-container[data-v-f2f99131] .emoji-type-image.emoji-set-facebook{background-image:url(https://unpkg.com/emoji-datasource-facebook@15.0.1/img/facebook/sheets-256/64.png)}.nc-emoji-picker-container[data-v-f2f99131] .emoji-type-image.emoji-set-google{background-image:url(https://unpkg.com/emoji-datasource-google@15.0.1/img/google/sheets-256/64.png)}.nc-emoji-picker-container[data-v-f2f99131] .emoji-type-image.emoji-set-twitter{background-image:url(https://unpkg.com/emoji-datasource-twitter@15.0.1/img/twitter/sheets-256/64.png)}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-bar{border:0 solid #d9d9d9}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-bar:first-child{border-bottom-width:1px;border-top-left-radius:5px;border-top-right-radius:5px}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-bar:last-child{border-top-width:1px;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-scroll{position:relative;overflow-y:scroll;flex:1;padding:0 6px 6px;z-index:0;will-change:transform;-webkit-overflow-scrolling:touch}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-anchors{display:flex;flex-direction:row;justify-content:space-between;padding:0 6px;color:#858585;line-height:0}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-anchor{position:relative;display:block;flex:1 1 auto;text-align:center;padding:12px 4px;overflow:hidden;transition:color .1s ease-out;border:none;background:none;box-shadow:none}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-anchor:hover,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-anchor-selected{color:#464646}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-anchor-selected .emoji-mart-anchor-bar{bottom:0}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-anchor-bar{position:absolute;bottom:-3px;left:0;width:100%;height:3px;background-color:#464646}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-anchors i{display:inline-block;width:100%;max-width:22px}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-anchors svg{fill:currentColor;max-height:18px}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .scroller{height:250px;position:relative;flex:1;padding:0 6px 6px;z-index:0;will-change:transform;-webkit-overflow-scrolling:touch}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-search{margin-top:6px;padding:0 6px}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-search input{font-size:16px;display:block;width:100%;padding:.2em .6em;border-radius:25px;border:1px solid #d9d9d9;outline:0}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-search-results{height:250px;overflow-y:scroll}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-category{position:relative}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-category .emoji-mart-emoji span{z-index:1;position:relative;text-align:center;cursor:default}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-category .emoji-mart-emoji:hover:before,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-emoji-selected:before{z-index:0;content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#f4f4f4;border-radius:100%;opacity:0}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-category .emoji-mart-emoji:hover:before,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-emoji-selected:before{opacity:1}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-category-label{position:sticky;top:0}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-static .emoji-mart-category-label{z-index:2;position:relative}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-category-label h3{display:block;font-size:16px;width:100%;font-weight:500;padding:5px 6px;background-color:#fff;background-color:#fffffff2}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-emoji{position:relative;display:inline-block;font-size:0}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-no-results{font-size:14px;text-align:center;padding-top:70px;color:#858585}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-no-results .emoji-mart-category-label{display:none}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-no-results .emoji-mart-no-results-label{margin-top:.2em}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-no-results .emoji-mart-emoji:hover:before{content:none}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-preview{position:relative;height:70px}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-preview-emoji,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-preview-data,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-preview-skins{position:absolute;top:50%;transform:translateY(-50%)}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-preview-emoji{left:12px}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-preview-data{left:68px;right:12px;word-break:break-all}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-preview-skins{right:30px;text-align:right}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-preview-name{font-size:14px}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-preview-shortname{font-size:12px;color:#888}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-preview-shortname+.emoji-mart-preview-shortname,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-preview-shortname+.emoji-mart-preview-emoticon,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-preview-emoticon+.emoji-mart-preview-emoticon{margin-left:.5em}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-preview-emoticon{font-size:11px;color:#bbb}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-title span{display:inline-block;vertical-align:middle}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-title .emoji-mart-emoji{padding:0}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-title-label{color:#999a9c;font-size:21px;font-weight:300}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-swatches{font-size:0;padding:2px 0;border:1px solid #d9d9d9;border-radius:12px;background-color:#fff}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-swatches-opened .emoji-mart-skin-swatch{width:16px;padding:0 2px}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-swatches-opened .emoji-mart-skin-swatch-selected:after{opacity:.75}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-swatch{display:inline-block;width:0;vertical-align:middle;transition-property:width,padding;transition-duration:.125s;transition-timing-function:ease-out}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-swatch:nth-child(1){transition-delay:0s}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-swatch:nth-child(2){transition-delay:.03s}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-swatch:nth-child(3){transition-delay:.06s}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-swatch:nth-child(4){transition-delay:.09s}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-swatch:nth-child(5){transition-delay:.12s}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-swatch:nth-child(6){transition-delay:.15s}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-swatch-selected{position:relative;width:16px;padding:0 2px}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-swatch-selected:after{content:"";position:absolute;top:50%;left:50%;width:4px;height:4px;margin:-2px 0 0 -2px;background-color:#fff;border-radius:100%;pointer-events:none;opacity:0;transition:opacity .2s ease-out}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin{display:inline-block;width:100%;padding-top:100%;max-width:12px;border-radius:100%}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-tone-1{background-color:#ffc93a}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-tone-2{background-color:#fadcbc}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-tone-3{background-color:#e0bb95}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-tone-4{background-color:#bf8f68}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-tone-5{background-color:#9b643d}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-skin-tone-6{background-color:#594539}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .vue-recycle-scroller{position:relative}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .vue-recycle-scroller.direction-horizontal{display:flex}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .vue-recycle-scroller__slot{flex:auto 0 0}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart-search .hidden{display:none;visibility:hidden}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart{background-color:var(--color-main-background)!important;border:0;color:var(--color-main-text)!important;display:flex!important}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart button{border:none;background:transparent;font-size:inherit}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-bar,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-anchors,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-search,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-search input,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-category,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-category-label,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-category-label span,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-skin-swatches{background-color:transparent!important;border-color:var(--color-border)!important;color:inherit!important}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-anchors{padding-block:0;padding-inline:calc(2 * var(--default-grid-baseline))}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-anchor{border-radius:0;margin:0!important;padding:0!important;height:var(--clickable-area-small);min-width:var(--clickable-area-small)}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-anchor:hover{background-color:var(--color-background-hover)}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-anchor:focus-visible{outline:2px solid var(--color-primary-element)!important;outline-offset:-2px}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-anchor div{display:grid;place-content:center}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-scroll{padding-inline:calc(2 * var(--default-grid-baseline));padding-block:0 calc(2 * var(--default-grid-baseline))}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-category{display:grid;grid-template-columns:repeat(8,1fr);justify-items:stretch}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-category.emoji-mart-no-results{grid-template-columns:1fr;font-size:inherit;color:var(--color-text-maxcontrast)!important}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart div.emoji-mart-category-label{grid-column:span 8;justify-self:stretch}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart h3.emoji-mart-category-label{display:flex;align-items:center;height:var(--default-clickable-area);margin:0;padding-inline:calc(2 * var(--default-grid-baseline));padding-block:0;-webkit-user-select:none;user-select:none}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-emoji{aspect-ratio:1/1;text-align:center;margin:0!important;padding:0!important}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-emoji:hover,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-emoji:focus-visible,.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-emoji.emoji-mart-emoji-selected{background-color:var(--color-background-hover)!important;border:none;border-radius:var(--border-radius-element);box-shadow:none!important;outline:2px solid var(--color-primary-element)!important;outline-offset:-2px}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-emoji:before{display:none}.nc-emoji-picker-container[data-v-f2f99131] .emoji-mart .emoji-mart-emoji span{cursor:pointer}.search__wrapper[data-v-f2f99131]{display:flex;flex-direction:row;gap:var(--default-grid-baseline);align-items:end;padding-block:var(--default-grid-baseline);padding-inline:calc(2 * var(--default-grid-baseline))}.row-selected button[data-v-f2f99131],.row-selected span[data-v-f2f99131]{vertical-align:middle}.emoji-delete[data-v-f2f99131]{vertical-align:top;margin-inline-start:-21px;margin-top:-3px}.material-design-icon[data-v-26ad2498]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}#guest-content-vue[data-v-26ad2498]{color:var(--color-main-text);background-color:var(--color-main-background);min-width:0;border-radius:var(--border-radius-element);box-shadow:0 0 10px var(--color-box-shadow);height:fit-content;padding:15px;margin:20px auto}.material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}#content.nc-guest-content{overflow:auto;margin-bottom:0;height:calc(var(--body-height) + var(--body-container-margin))}.material-design-icon[data-v-92fb182d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.header-menu[data-v-92fb182d]{position:relative;width:var(--header-height);height:var(--header-height)}.header-menu .header-menu__trigger[data-v-92fb182d]{--button-size: var(--header-height) !important;height:var(--header-height);opacity:.85;filter:none!important;color:var(--color-background-plain-text, var(--color-primary-text))!important}.header-menu .header-menu__trigger[data-v-92fb182d]:focus-visible{outline:none!important;box-shadow:none!important}.header-menu .header-menu__trigger[data-v-92fb182d] .button-vue__icon svg,.header-menu .header-menu__trigger[data-v-92fb182d] .button-vue__icon:not(:has(svg)){mask:var(--header-menu-icon-mask, none)}.header-menu--opened .header-menu__trigger[data-v-92fb182d],.header-menu__trigger[data-v-92fb182d]:hover,.header-menu__trigger[data-v-92fb182d]:focus,.header-menu__trigger[data-v-92fb182d]:active{opacity:1}@media only screen and (max-width: 512px){.header-menu[data-v-92fb182d]{width:var(--default-clickable-area)}.header-menu .header-menu__trigger[data-v-92fb182d]{--button-size: var(--default-clickable-area) !important}}.material-design-icon[data-v-d45c5788]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}/*! + * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */.header-menu[data-v-d45c5788]{position:relative;width:var(--header-height);height:var(--header-height)}.header-menu .header-menu__trigger[data-v-d45c5788]{--button-size: var(--header-height) !important;height:var(--header-height);opacity:.85;filter:none!important;color:var(--color-background-plain-text, var(--color-primary-text))!important}.header-menu .header-menu__trigger[data-v-d45c5788]:focus-visible{outline:none!important;box-shadow:none!important}.header-menu .header-menu__trigger[data-v-d45c5788] .button-vue__icon svg,.header-menu .header-menu__trigger[data-v-d45c5788] .button-vue__icon:not(:has(svg)){mask:var(--header-menu-icon-mask, none)}.header-menu--opened .header-menu__trigger[data-v-d45c5788],.header-menu__trigger[data-v-d45c5788]:hover,.header-menu__trigger[data-v-d45c5788]:focus,.header-menu__trigger[data-v-d45c5788]:active{opacity:1}@media only screen and (max-width: 512px){.header-menu[data-v-d45c5788]{width:var(--default-clickable-area)}.header-menu .header-menu__trigger[data-v-d45c5788]{--button-size: var(--default-clickable-area) !important}}.header-menu__wrapper[data-v-d45c5788]{position:fixed;z-index:2000;top:var(--header-height);inset-inline-end:0;box-sizing:border-box;margin:0 8px;border-radius:var(--border-radius-element);background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow))}.header-menu__caret[data-v-d45c5788]{position:absolute;z-index:2001;bottom:0;inset-inline-start:calc(50% - 10px);width:0;height:0;content:" ";pointer-events:none;border:10px solid transparent;border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-d45c5788]{overflow:auto;width:350px;max-width:calc(100vw - 16px);min-height:calc(var(--default-clickable-area) * 1.5);max-height:calc(100vh - var(--header-height) * 2)}.header-menu__content[data-v-d45c5788] .empty-content{margin:12vh 10px}._material-design-icon_lf0a1_12{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._kbd_lf0a1_20{display:inline-flex;align-items:center;justify-content:center;min-width:var(--default-clickable-area);height:var(--default-clickable-area);padding-inline:calc(2 * var(--default-grid-baseline)) calc(2 * var(--default-grid-baseline));border:2px solid var(--color-primary-element-light);border-block-end-width:4px;border-radius:var(--border-radius-element);box-shadow:none;font-family:var(--font-family);line-height:1;white-space:nowrap}._kbd_lf0a1_20+._kbd_lf0a1_20{margin-inline-start:calc(1 * var(--default-grid-baseline))}.material-design-icon[data-v-56c9c89e]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.list-item__wrapper[data-v-56c9c89e]{display:flex;position:relative;width:100%;padding:2px 4px}.list-item__wrapper[data-v-56c9c89e]:first-of-type{padding-block-start:4px}.list-item__wrapper[data-v-56c9c89e]:last-of-type{padding-block-end:4px}.list-item__wrapper--active .list-item[data-v-56c9c89e],.list-item__wrapper.active .list-item[data-v-56c9c89e]{background-color:var(--color-primary-element);color:var(--color-primary-element-text)!important}.list-item__wrapper--active .list-item[data-v-56c9c89e]:hover,.list-item__wrapper--active .list-item[data-v-56c9c89e]:focus-within,.list-item__wrapper--active .list-item[data-v-56c9c89e]:has(:focus-visible),.list-item__wrapper--active .list-item[data-v-56c9c89e]:has(:active),.list-item__wrapper.active .list-item[data-v-56c9c89e]:hover,.list-item__wrapper.active .list-item[data-v-56c9c89e]:focus-within,.list-item__wrapper.active .list-item[data-v-56c9c89e]:has(:focus-visible),.list-item__wrapper.active .list-item[data-v-56c9c89e]:has(:active){background-color:var(--color-primary-element-hover)}.list-item__wrapper--active .list-item-content__name[data-v-56c9c89e],.list-item__wrapper--active .list-item-content__subname[data-v-56c9c89e],.list-item__wrapper--active .list-item-content__details[data-v-56c9c89e],.list-item__wrapper--active .list-item-details__details[data-v-56c9c89e],.list-item__wrapper.active .list-item-content__name[data-v-56c9c89e],.list-item__wrapper.active .list-item-content__subname[data-v-56c9c89e],.list-item__wrapper.active .list-item-content__details[data-v-56c9c89e],.list-item__wrapper.active .list-item-details__details[data-v-56c9c89e]{color:var(--color-primary-element-text)!important}.list-item__wrapper .list-item-content__name[data-v-56c9c89e],.list-item__wrapper .list-item-content__subname[data-v-56c9c89e],.list-item__wrapper .list-item-content__details[data-v-56c9c89e],.list-item__wrapper .list-item-details__details[data-v-56c9c89e]{white-space:nowrap;margin-block:0;margin-inline:0 auto;overflow:hidden;text-overflow:ellipsis}.list-item-content__name[data-v-56c9c89e]{min-width:100px;flex:1 1 10%;font-weight:500}.list-item-content__subname[data-v-56c9c89e]{flex:1 0;min-width:0;color:var(--color-text-maxcontrast)}.list-item-content__subname--bold[data-v-56c9c89e]{font-weight:500}.list-item[data-v-56c9c89e]{--list-item-padding: var(--default-grid-baseline);--list-item-height: 2lh;--list-item-border-radius: var(--border-radius-element, 32px);box-sizing:border-box;display:flex;position:relative;flex:0 0 auto;justify-content:flex-start;padding:var(--list-item-padding);width:100%;border-radius:var(--border-radius-element, 32px);cursor:pointer;transition:background-color var(--animation-quick) ease-in-out;list-style:none}.list-item[data-v-56c9c89e]:hover,.list-item[data-v-56c9c89e]:focus-within,.list-item[data-v-56c9c89e]:has(:active),.list-item[data-v-56c9c89e]:has(:focus-visible){background-color:var(--color-background-hover)}.list-item[data-v-56c9c89e]:has(.list-item__anchor:focus-visible){outline:2px solid var(--color-main-text);box-shadow:0 0 0 4px var(--color-main-background)}.list-item--compact[data-v-56c9c89e]{--list-item-padding: calc(.5 * var(--default-grid-baseline)) var(--default-grid-baseline)}.list-item--compact[data-v-56c9c89e]:not(:has(.list-item-content__subname)){--list-item-height: var(--default-clickable-area)}.list-item--one-line[data-v-56c9c89e]{--list-item-height: var(--default-clickable-area);--list-item-border-radius: var(--border-radius-element, calc(var(--default-clickable-area) / 2));--list-item-padding: var(--default-grid-baseline)}.list-item--one-line .list-item-content__main[data-v-56c9c89e]{display:flex;justify-content:start;gap:12px;min-width:0}.list-item--one-line .list-item-content__details[data-v-56c9c89e]{flex-direction:row;align-items:center;justify-content:end}.list-item--one-line .list-item-content__name[data-v-56c9c89e]{align-self:center;max-width:300px}.list-item__anchor[data-v-56c9c89e]{color:inherit;display:flex;flex:1 0 auto;align-items:center;height:var(--list-item-height);min-width:0}.list-item__anchor[data-v-56c9c89e]:focus-visible{outline:none}.list-item-content[data-v-56c9c89e]{display:flex;flex:1 0;justify-content:space-between;padding-inline-start:calc(2 * var(--default-grid-baseline));min-width:0}.list-item-content__main[data-v-56c9c89e]{flex:1 0;width:0;margin:auto 0}.list-item-content__main--oneline[data-v-56c9c89e]{display:flex}.list-item-content__details[data-v-56c9c89e]{display:flex;flex-direction:column;justify-content:end;align-items:end}.list-item-content__actions[data-v-56c9c89e],.list-item-content__extra-actions[data-v-56c9c89e]{flex:0 0 auto;align-self:center;justify-content:center;margin-inline-start:var(--default-grid-baseline)}.list-item-content__extra-actions[data-v-56c9c89e]{display:flex;align-items:center;gap:var(--default-grid-baseline)}.list-item-details__details[data-v-56c9c89e]{color:var(--color-text-maxcontrast);margin:0 9px!important;font-weight:400}.list-item-details__extra[data-v-56c9c89e]{margin:2px 4px 0;display:flex;align-items:center}.list-item-details__indicator[data-v-56c9c89e]{margin:0 5px}.list-item__extra[data-v-56c9c89e]{margin-top:var(--default-grid-baseline)}.material-design-icon[data-v-1355c4c1]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.option[data-v-1355c4c1]{display:flex;align-items:center;width:100%;height:var(--height);cursor:inherit}.option__avatar[data-v-1355c4c1]{margin-inline-end:var(--margin)}.option__details[data-v-1355c4c1]{display:flex;flex:1 1;flex-direction:column;justify-content:center;min-width:0}.option__lineone[data-v-1355c4c1]{color:var(--color-main-text)}.option__linetwo[data-v-1355c4c1]{color:var(--color-text-maxcontrast)}.option__lineone[data-v-1355c4c1],.option__linetwo[data-v-1355c4c1]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2}.option__lineone strong[data-v-1355c4c1],.option__linetwo strong[data-v-1355c4c1]{font-weight:700}.option--compact .option__lineone[data-v-1355c4c1]{font-size:14px}.option--compact .option__linetwo[data-v-1355c4c1]{font-size:11px;line-height:1.5;margin-top:-4px}.option__icon[data-v-1355c4c1]{width:var(--default-clickable-area);height:var(--default-clickable-area);color:var(--color-text-maxcontrast)}.option__icon.icon[data-v-1355c4c1]{flex:0 0 var(--default-clickable-area);opacity:.7;background-position:center;background-size:16px}.option__details[data-v-1355c4c1],.option__lineone[data-v-1355c4c1],.option__linetwo[data-v-1355c4c1],.option__icon[data-v-1355c4c1]{cursor:inherit}.material-design-icon[data-v-dfa67081]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.notecard[data-v-dfa67081]{--note-card-icon-size: 20px;--note-card-padding: calc(2 * var(--default-grid-baseline));color:var(--color-main-text)!important;background-color:var(--note-background)!important;border-inline-start:var(--default-grid-baseline) solid var(--note-theme);border-radius:var(--border-radius-small);margin:1rem 0;padding:var(--note-card-padding);display:flex;flex-direction:row;gap:var(--note-card-padding)}.notecard__heading[data-v-dfa67081]{font-size:var(--note-card-icon-size);font-weight:600}.notecard__icon[data-v-dfa67081]{color:var(--note-theme)}.notecard__icon--heading[data-v-dfa67081]{font-size:var(--note-card-icon-size);margin-block:calc((1lh - 1em)/2) auto}.notecard--success[data-v-dfa67081]{--note-background: var(--color-success);--note-theme: var(--color-success-text)}.notecard--info[data-v-dfa67081]{--note-background: var(--color-info);--note-theme: var(--color-info-text)}.notecard--error[data-v-dfa67081]{--note-background: var(--color-error);--note-theme: var(--color-error-text)}.notecard--warning[data-v-dfa67081]{--note-background: var(--color-warning);--note-theme: var(--color-warning-text)}.notecard--legacy[data-v-dfa67081]{background-color:color-mix(in srgb,var(--note-background),var(--color-main-background) 80%)!important;color:var(--color-main-text)!important}.material-design-icon[data-v-38ba4aa1]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.progress-bar[data-v-38ba4aa1]{display:block;height:var(--progress-bar-height);--progress-bar-color: var(--0a7905e8);--progress-bar-height: var(--d7eb5974)}.progress-bar--linear[data-v-38ba4aa1]{width:100%;overflow:hidden;border:0;padding:0;background:var(--color-background-dark);border-radius:calc(var(--progress-bar-height) / 2)}.progress-bar--linear[data-v-38ba4aa1]::-webkit-progress-bar{height:var(--progress-bar-height);background-color:transparent}.progress-bar--linear[data-v-38ba4aa1]::-webkit-progress-value{background:var(--progress-bar-color, var(--gradient-primary-background));border-radius:calc(var(--progress-bar-height) / 2)}.progress-bar--linear[data-v-38ba4aa1]::-moz-progress-bar{background:var(--progress-bar-color, var(--gradient-primary-background));border-radius:calc(var(--progress-bar-height) / 2)}.progress-bar--circular[data-v-38ba4aa1]{width:var(--progress-bar-height);color:var(--progress-bar-color)}.progress-bar--error[data-v-38ba4aa1]{color:var(--color-text-error, var(--color-error))!important}.progress-bar--error[data-v-38ba4aa1]::-moz-progress-bar{background:var(--color-text-error, var(--color-error))!important}.progress-bar--error[data-v-38ba4aa1]::-webkit-progress-value{background:var(--color-text-error, var(--color-error))!important}._material-design-icon_u3tih_12{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._radioGroup_u3tih_20{display:flex;flex-direction:column}._radioGroup_u3tih_20:not(._radioGroup_buttonVariant_u3tih_24) .checkbox-content{max-width:unset!important}._radioGroup__label_u3tih_28{font-size:1.2em;font-weight:700;margin-inline-start:var(--border-radius-element)}._radioGroup__description_u3tih_34{color:var(--color-text-maxcontrast);margin-block-end:var(--default-grid-baseline);margin-inline-start:var(--border-radius-element)}._radioGroup__wrapper_u3tih_40{display:flex;flex-direction:column}._radioGroup__wrapper_u3tih_40>*{flex:1 0 1px}._radioGroup__label_u3tih_28+._radioGroup__wrapper_u3tih_40{margin-block-start:var(--default-grid-baseline)}._radioGroup_buttonVariant_u3tih_24 ._radioGroup__wrapper_u3tih_40{flex-direction:row;gap:var(--default-grid-baseline)}._material-design-icon_buhgs_12{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._radioGroupButton_buhgs_20{--radio-group-button--border-radius: var(--border-radius-small);--radio-group-button--border-width: 1px;--radio-group-button--color: var(--color-primary-element-light-text);--radio-group-button--background-color: var(--color-primary-element-light);--radio-group-button--background-color-hover: var(--color-primary-element-light-hover);--radio-group-button--padding: 1px;cursor:pointer;color:var(--radio-group-button--color);background-color:var(--radio-group-button--background-color);transition:var(--animation-quick) background-color;border:var(--radio-group-button--border-width) solid var(--radio-group-button--background-color-hover);border-bottom-width:2px;border-radius:var(--radio-group-button--border-radius);display:flex;flex-direction:row;align-items:center;justify-content:center;text-align:center;min-height:var(--default-clickable-area);padding-block:var(--radio-group-button--padding) 0;padding-inline:var(--radio-group-button--padding)}._radioGroupButton_buhgs_20 *{cursor:pointer}:has(._radioGroupButton__label_buhgs_46){padding-inline:calc(var(--radio-group-button--padding) + var(--border-radius-element))}:has(._radioGroupButton__icon_buhgs_49){padding-inline-start:var(--radio-group-button--padding)}._radioGroupButton_buhgs_20:hover{background-color:var(--radio-group-button--background-color-hover)}._radioGroupButton_buhgs_20:focus-within{--radio-group-button--border-width: 2px;--radio-group-button--padding: 0px;border:var(--radio-group-button--border-width) solid var(--color-main-text)!important;outline:calc(var(--default-grid-baseline) / 2) var(--color-main-background)}._radioGroupButton_buhgs_20:first-of-type{border-start-start-radius:var(--border-radius-element);border-end-start-radius:var(--border-radius-element)}._radioGroupButton_buhgs_20:last-of-type{border-start-end-radius:var(--border-radius-element);border-end-end-radius:var(--border-radius-element)}._radioGroupButton_active_buhgs_70{--radio-group-button--color: var(--color-primary-element-text);--radio-group-button--background-color: var(--color-primary-element);--radio-group-button--background-color-hover: var(--color-primary-element-hover)}._radioGroupButton__label_buhgs_46{font-weight:700}._radioGroupButton__icon_buhgs_49{--radio-group-button--icon-size: calc(var(--default-clickable-area) - 4px);display:flex;align-items:center;justify-content:center;height:100%;width:var(--radio-group-button--icon-size)}._radioGroupButton__icon_buhgs_49 *{--default-clickable-area: var(--radio-group-button--icon-size)}.material-design-icon[data-v-f5ceafce]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.resource[data-v-f5ceafce]{display:flex;align-items:center;height:var(--default-clickable-area)}.resource__button[data-v-f5ceafce]{width:100%!important;justify-content:flex-start!important;padding:0!important}.resource__button[data-v-f5ceafce] .button-vue__wrapper{justify-content:flex-start!important}.resource__button[data-v-f5ceafce] .button-vue__wrapper .button-vue__text{font-weight:400!important;margin-inline-start:2px!important}.resource__icon[data-v-f5ceafce]{width:32px;height:32px;background-color:var(--color-text-maxcontrast);border-radius:50%;display:flex;align-items:center;justify-content:center}.resource__icon img[data-v-f5ceafce]{width:16px;height:16px;filter:var(--background-invert-if-dark)}.material-design-icon[data-v-4bed5b23]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.team-resources__header[data-v-4bed5b23]{font-weight:700;margin-bottom:6px}.related-team[data-v-4bed5b23]{border-radius:var(--border-radius-container);border:2px solid var(--color-border-dark);margin-bottom:6px}.related-team__open[data-v-4bed5b23]{border-color:var(--color-primary-element)}.related-team__header[data-v-4bed5b23]{padding:6px;padding-inline-end:24px;display:flex;gap:12px}.related-team__name[data-v-4bed5b23]{display:flex;flex-grow:1;align-items:center;gap:12px;padding:6px 12px;font-weight:700;margin:0}.related-team .related-team-provider[data-v-4bed5b23]{padding:6px 12px}.related-team .related-team-provider__name[data-v-4bed5b23]{font-weight:700;margin-bottom:3px}.related-team .related-team-provider__link[data-v-4bed5b23]{display:flex;gap:12px;padding:6px 12px;font-weight:700}.related-team .related-team-resource__link[data-v-4bed5b23]{display:flex;gap:12px;height:var(--default-clickable-area);align-items:center;border-radius:var(--border-radius-element)}.related-team .related-team-resource__link[data-v-4bed5b23]:hover{background-color:var(--color-background-hover)}.related-team .related-team-resource__link[data-v-4bed5b23]:focus{background-color:var(--color-background-hover);outline:2px solid var(--color-primary-element)}.related-team .related-team-resource .resource__icon[data-v-4bed5b23]{width:var(--default-clickable-area);height:var(--default-clickable-area);display:flex;align-items:center;justify-content:center;text-align:center}.related-team .related-team-resource .resource__icon>img[data-v-4bed5b23]{border-radius:var(--border-radius-pill);overflow:hidden;width:32px;height:32px}.material-design-icon[data-v-7a009a6b]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.related-resources__header h5[data-v-7a009a6b]{font-weight:700;margin-bottom:6px}.related-resources__header p[data-v-7a009a6b]{color:var(--color-text-maxcontrast)}.material-design-icon[data-v-ca83b679]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.autocomplete-result[data-v-ca83b679]{display:flex;align-items:center;gap:var(--default-grid-baseline);line-height:1.2;--auto-complete-result-avatar-size: var(--default-clickable-area)}.autocomplete-result__icon[data-v-ca83b679]{position:relative;flex:0 0 var(--default-clickable-area);width:var(--default-clickable-area);min-width:var(--default-clickable-area);height:var(--default-clickable-area);border-radius:var(--default-clickable-area);background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:contain}.autocomplete-result__icon--with-avatar[data-v-ca83b679]{color:inherit;background-size:cover}.autocomplete-result__status[data-v-ca83b679]{--auto-complete-result-status-icon-size: clamp(14px, var(--auto-complete-result-avatar-size) * .4, 18px);--auto-complete-result-status-icon-position: calc(var(--auto-complete-result-avatar-size) / 2 * (1 - 1 / sqrt(2)) - var(--auto-complete-result-status-icon-size) / 2);box-sizing:border-box;position:absolute;inset-inline-end:var(--auto-complete-result-status-icon-position);bottom:var(--auto-complete-result-status-icon-position);height:var(--auto-complete-result-status-icon-size);width:var(--auto-complete-result-status-icon-size);border:2px solid var(--color-main-background);border-radius:50%;background-color:var(--color-main-background);font-size:calc(var(--auto-complete-result-status-icon-size) / 1.2);line-height:1.2;background-repeat:no-repeat;background-size:var(--auto-complete-result-status-icon-size);background-position:center}.autocomplete-result__status--icon[data-v-ca83b679]{border:none;background-color:transparent}.autocomplete-result__content[data-v-ca83b679]{display:flex;flex:1 1 100%;flex-direction:column;justify-content:center;min-width:0}.autocomplete-result__title[data-v-ca83b679],.autocomplete-result__subline[data-v-ca83b679]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.autocomplete-result__subline[data-v-ca83b679]{color:var(--color-text-maxcontrast)}.material-design-icon[data-v-a5d03374]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.rich-contenteditable[data-v-a5d03374]{--contenteditable-block-offset: calc(2 * var(--default-grid-baseline));--contenteditable-inline-start-offset: calc(2 * var(--default-grid-baseline));--contenteditable-inline-end-offset: calc(2 * var(--default-grid-baseline));position:relative;width:auto}.rich-contenteditable__label[data-v-a5d03374]{position:absolute;margin-inline:14px;max-width:fit-content;inset-block-start:11px;inset-inline:0;color:var(--color-text-maxcontrast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick),background-color var(--animation-quick) var(--animation-slow)}.rich-contenteditable__input:focus+.rich-contenteditable__label[data-v-a5d03374],.rich-contenteditable__input:not(.rich-contenteditable__input--empty)+.rich-contenteditable__label[data-v-a5d03374]{inset-block-start:-10px;line-height:1.5;font-size:13px;font-weight:500;border-radius:var(--default-grid-baseline) var(--default-grid-baseline) 0 0;background-color:var(--color-main-background);padding-inline:5px;margin-inline:9px;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick)}.rich-contenteditable__input[data-v-a5d03374]{overflow-y:auto;width:auto;margin:0;padding-block:var(--contenteditable-block-offset);padding-inline:var(--contenteditable-inline-start-offset) var(--contenteditable-inline-end-offset);cursor:text;white-space:pre-wrap;overflow-wrap:break-word;color:var(--color-main-text);border:2px solid var(--color-border-maxcontrast);border-radius:var(--border-radius-element);outline:none;background-color:var(--color-main-background);font-family:var(--font-face);font-size:inherit;tab-size:4;min-height:var(--default-clickable-area);max-height:calc(var(--default-clickable-area) * 5.5)}.rich-contenteditable__input--has-label[data-v-a5d03374]{margin-top:10px}.rich-contenteditable__input--empty[data-v-a5d03374]:focus:before,.rich-contenteditable__input--empty[data-v-a5d03374]:not(.rich-contenteditable__input--has-label):before{content:attr(aria-placeholder);color:var(--color-text-maxcontrast);position:absolute;width:calc(100% - var(--contenteditable-inline-start-offset) - var(--contenteditable-inline-end-offset));height:calc(100% - 2 * var(--contenteditable-block-offset));overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.rich-contenteditable__input[contenteditable=false][data-v-a5d03374]:not(.rich-contenteditable__input--disabled){cursor:default;background-color:transparent;color:var(--color-main-text);border-color:transparent;opacity:1;border-radius:0}.rich-contenteditable__input--multiline[data-v-a5d03374]{min-height:calc(var(--default-clickable-area) * 3);max-height:none}.rich-contenteditable__input--disabled[data-v-a5d03374]{opacity:.5;color:var(--color-text-maxcontrast);border:2px solid var(--color-background-darker);border-radius:var(--border-radius-small);background-color:var(--color-background-dark)}.rich-contenteditable__input--overflow[data-v-a5d03374],.rich-contenteditable__input--overflow[data-v-a5d03374]:hover{border-color:var(--color-border-error, var(--color-error))!important}._material-design-icon_1xkrb_12{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._tribute-container_1xkrb_20{z-index:9000;overflow:auto;position:absolute;left:-100vw;margin:var(--default-grid-baseline) 0;padding:var(--default-grid-baseline);color:var(--color-text-maxcontrast);border-radius:var(--border-radius-element);background:var(--color-main-background);box-shadow:0 1px 5px var(--color-box-shadow)}._tribute-container_1xkrb_20,._tribute-container_1xkrb_20 *{box-sizing:border-box}._tribute-container_1xkrb_20 ul{display:flex;flex-direction:column;gap:var(--default-grid-baseline)}._tribute-container_1xkrb_20 ._tribute-container__item_1xkrb_41{color:var(--color-text-maxcontrast);border-radius:var(--border-radius-small);padding:var(--default-grid-baseline);cursor:pointer;min-height:var(--clickable-area-small, auto)}._tribute-container_1xkrb_20 ._tribute-container__item_1xkrb_41.highlight{color:var(--color-main-text);background:var(--color-background-hover)}._tribute-container_1xkrb_20 ._tribute-container__item_1xkrb_41.highlight,._tribute-container_1xkrb_20 ._tribute-container__item_1xkrb_41.highlight *{cursor:pointer}._tribute-container_1xkrb_20._tribute-container--focus-visible_1xkrb_55 .highlight._tribute-container__item_1xkrb_41{outline:2px solid var(--color-main-text)!important}._tribute-container-autocomplete_1xkrb_59{min-width:250px;max-width:300px;max-height:calc((var(--default-clickable-area) + 3 * var(--default-grid-baseline)) * 4.5 - 1.5 * var(--default-grid-baseline))}._tribute-container-emoji_1xkrb_65,._tribute-container-link_1xkrb_66{min-width:200px;max-width:200px;max-height:calc((24px + 3 * var(--default-grid-baseline)) * 5.5 - 1.5 * var(--default-grid-baseline))}._tribute-container-emoji_1xkrb_65 ._tribute-item_1xkrb_71,._tribute-container-link_1xkrb_66 ._tribute-item_1xkrb_71{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._tribute-container-link_1xkrb_66{min-width:200px;max-width:300px}._tribute-container-link_1xkrb_66 ._tribute-item_1xkrb_71{display:flex;align-items:center}._tribute-container-link_1xkrb_66 ._tribute-item__title_1xkrb_86{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._tribute-container-link_1xkrb_66 ._tribute-item__icon_1xkrb_91{margin:auto 0;width:20px;height:20px;object-fit:contain;padding-inline-end:var(--default-grid-baseline);filter:var(--background-invert-if-dark)}.material-design-icon[data-v-e408867a],.material-design-icon[data-v-90c6aa3b]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.provider-list[data-v-90c6aa3b]{width:100%;min-height:400px;padding:0 16px 16px;display:flex;flex-direction:column}.provider-list--select[data-v-90c6aa3b]{width:100%}.provider-list--select .provider[data-v-90c6aa3b]{display:flex;align-items:center;height:28px;overflow:hidden}.provider-list--select .provider .link-icon[data-v-90c6aa3b]{margin-inline-end:8px}.provider-list--select .provider .provider-icon[data-v-90c6aa3b]{width:20px;height:20px;object-fit:contain;margin-inline-end:8px;filter:var(--background-invert-if-dark)}.provider-list--select .provider .option-text[data-v-90c6aa3b]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.material-design-icon[data-v-8ce33442]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.widget-custom[data-v-8ce33442]{width:100%;margin:auto;margin-bottom:calc(var(--default-grid-baseline, 4px) * 3);margin-top:calc(var(--default-grid-baseline, 4px) * 3);overflow:hidden;border:2px solid var(--color-border);border-radius:var(--border-radius-container);background-color:transparent;display:flex}.widget-custom.full-width[data-v-8ce33442]{width:var(--widget-full-width, 100%)!important;inset-inline-start:calc((var(--widget-full-width, 100%) - 100%) / 2 * -1);position:relative}.widget-access[data-v-8ce33442]{width:100%;margin:auto;margin-bottom:calc(var(--default-grid-baseline, 4px) * 3);margin-top:calc(var(--default-grid-baseline, 4px) * 3);overflow:hidden;border:2px solid var(--color-border);border-radius:var(--border-radius-container);background-color:transparent;display:flex;padding:calc(var(--default-grid-baseline, 4px) * 3)}.widget-default[data-v-8ce33442]{width:100%;margin:auto;margin-bottom:calc(var(--default-grid-baseline, 4px) * 3);margin-top:calc(var(--default-grid-baseline, 4px) * 3);overflow:hidden;border:2px solid var(--color-border);border-radius:var(--border-radius-container);background-color:transparent;display:flex}.widget-default--compact[data-v-8ce33442]{flex-direction:column}.widget-default--compact .widget-default--image[data-v-8ce33442]{width:100%;height:150px}.widget-default--compact .widget-default--details[data-v-8ce33442]{width:100%;padding-top:calc(var(--default-grid-baseline, 4px) * 2);padding-bottom:calc(var(--default-grid-baseline, 4px) * 2)}.widget-default--compact .widget-default--description[data-v-8ce33442]{display:none}.widget-default--image[data-v-8ce33442]{width:40%;background-position:center;background-size:cover;background-repeat:no-repeat}.widget-default--name[data-v-8ce33442]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.widget-default--details[data-v-8ce33442]{padding:calc(var(--default-grid-baseline, 4px) * 3);width:60%}.widget-default--details p[data-v-8ce33442]{margin:0;padding:0}.widget-default--description[data-v-8ce33442]{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical}.widget-default--link[data-v-8ce33442]{color:var(--color-text-maxcontrast);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toggle-interactive[data-v-8ce33442]{position:relative}.toggle-interactive .toggle-interactive--button[data-v-8ce33442]{position:absolute;bottom:var(--default-grid-baseline);inset-inline-end:var(--default-grid-baseline);z-index:10000}.material-design-icon[data-v-6d7fc06a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.raw-link[data-v-6d7fc06a]{width:100%;min-height:350px;display:flex;flex-direction:column;overflow-y:auto;padding:0 16px 16px}.raw-link .input-wrapper[data-v-6d7fc06a]{width:100%}.raw-link .reference-widget[data-v-6d7fc06a]{display:flex}.raw-link--empty-content .provider-icon[data-v-6d7fc06a]{width:150px;height:150px;object-fit:contain;filter:var(--background-invert-if-dark)}.raw-link--input[data-v-6d7fc06a]{width:99%}.material-design-icon[data-v-059edcfb]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.result[data-v-059edcfb]{display:flex;align-items:center;height:var(--default-clickable-area);overflow:hidden}.result--icon-class[data-v-059edcfb],.result--image[data-v-059edcfb]{width:40px;min-width:40px;height:40px;object-fit:contain}.result--icon-class.rounded[data-v-059edcfb],.result--image.rounded[data-v-059edcfb]{border-radius:50%}.result--content[data-v-059edcfb]{display:flex;flex-direction:column;padding-inline-start:10px;overflow:hidden}.result--content--name[data-v-059edcfb],.result--content--subline[data-v-059edcfb]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.material-design-icon[data-v-e8abf1d4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.smart-picker-search[data-v-e8abf1d4]{width:100%;display:flex;flex-direction:column;padding:0 16px 16px}.smart-picker-search.with-empty-content[data-v-e8abf1d4]{min-height:400px}.smart-picker-search .provider-icon[data-v-e8abf1d4]{width:150px;height:150px;object-fit:contain;filter:var(--background-invert-if-dark)}.smart-picker-search--select[data-v-e8abf1d4],.smart-picker-search--select .search-result[data-v-e8abf1d4]{width:100%}.smart-picker-search--select .group-name-icon[data-v-e8abf1d4],.smart-picker-search--select .option-simple-icon[data-v-e8abf1d4]{width:20px;height:20px;margin:0 20px 0 10px}.smart-picker-search--select .custom-option[data-v-e8abf1d4]{height:var(--default-clickable-area);display:flex;align-items:center;overflow:hidden}.smart-picker-search--select .option-text[data-v-e8abf1d4]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.material-design-icon[data-v-b193005a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.reference-picker[data-v-b193005a],.reference-picker .custom-element-wrapper[data-v-b193005a],.reference-picker .custom-element-wrapper .custom-element[data-v-b193005a]{display:flex;overflow-y:auto;width:100%}.material-design-icon[data-v-15018516]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.reference-picker-modal[data-v-15018516] .modal-container{display:flex!important}.reference-picker-modal--content[data-v-15018516]{width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow-y:auto}.reference-picker-modal--content .close-button[data-v-15018516],.reference-picker-modal--content .back-button[data-v-15018516]{position:absolute;top:4px}.reference-picker-modal--content .back-button[data-v-15018516]{inset-inline-start:4px}.reference-picker-modal--content .close-button[data-v-15018516]{inset-inline-end:4px}.reference-picker-modal--content>h2[data-v-15018516]{display:flex;margin:12px 0 20px}.reference-picker-modal--content>h2 .icon[data-v-15018516]{margin-inline-end:8px}.material-design-icon[data-v-ddd65c9e]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.widgets--list[data-v-ddd65c9e]{width:100%;min-height:var(--default-clickable-area)}.material-design-icon[data-v-bfd4d4b7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.rich-text--wrapper[data-v-bfd4d4b7]{overflow-wrap:break-word;line-height:1.5}.rich-text--wrapper .rich-text--fallback[data-v-bfd4d4b7],.rich-text--wrapper .rich-text-component[data-v-bfd4d4b7]{display:inline}.rich-text--wrapper .rich-text--external-link[data-v-bfd4d4b7]{text-decoration:underline}.rich-text--wrapper .rich-text--external-link[data-v-bfd4d4b7]:after{content:" ↗"}.rich-text--wrapper-markdown[data-v-bfd4d4b7]{tab-size:4}.rich-text--wrapper-markdown[data-v-bfd4d4b7]>:first-child,.rich-text--wrapper-markdown div[data-v-bfd4d4b7]>:first-child,.rich-text--wrapper-markdown blockquote[data-v-bfd4d4b7]>:first-child{margin-top:0!important}.rich-text--wrapper-markdown[data-v-bfd4d4b7]>:last-child,.rich-text--wrapper-markdown[data-v-bfd4d4b7]>*:has(+.rich-text--reference-widget),.rich-text--wrapper-markdown div[data-v-bfd4d4b7]>:last-child,.rich-text--wrapper-markdown blockquote[data-v-bfd4d4b7]>:last-child{margin-block-end:0!important}.rich-text--wrapper-markdown blockquote[data-v-bfd4d4b7]{padding-inline-start:13px;border-inline-start:2px solid var(--color-border-dark);color:var(--color-text-maxcontrast)}.rich-text--wrapper-markdown h1[data-v-bfd4d4b7],.rich-text--wrapper-markdown h2[data-v-bfd4d4b7],.rich-text--wrapper-markdown h3[data-v-bfd4d4b7],.rich-text--wrapper-markdown h4[data-v-bfd4d4b7],.rich-text--wrapper-markdown h5[data-v-bfd4d4b7],.rich-text--wrapper-markdown h6[data-v-bfd4d4b7],.rich-text--wrapper-markdown p[data-v-bfd4d4b7],.rich-text--wrapper-markdown ul[data-v-bfd4d4b7],.rich-text--wrapper-markdown ol[data-v-bfd4d4b7],.rich-text--wrapper-markdown blockquote[data-v-bfd4d4b7],.rich-text--wrapper-markdown pre[data-v-bfd4d4b7]{margin-top:0;margin-block-end:1em}.rich-text--wrapper-markdown h1[data-v-bfd4d4b7],.rich-text--wrapper-markdown h2[data-v-bfd4d4b7],.rich-text--wrapper-markdown h3[data-v-bfd4d4b7],.rich-text--wrapper-markdown h4[data-v-bfd4d4b7],.rich-text--wrapper-markdown h5[data-v-bfd4d4b7],.rich-text--wrapper-markdown h6[data-v-bfd4d4b7]{font-weight:700}.rich-text--wrapper-markdown h1[data-v-bfd4d4b7]{font-size:30px}.rich-text--wrapper-markdown ul[data-v-bfd4d4b7],.rich-text--wrapper-markdown ol[data-v-bfd4d4b7]{padding-inline-start:4ch}.rich-text--wrapper-markdown ul[data-v-bfd4d4b7]{list-style-type:disc}.rich-text--wrapper-markdown ul.contains-task-list[data-v-bfd4d4b7]{list-style-type:none;padding:0}.rich-text--wrapper-markdown li.task-list-item>ul[data-v-bfd4d4b7],.rich-text--wrapper-markdown li.task-list-item>ol[data-v-bfd4d4b7],.rich-text--wrapper-markdown li.task-list-item>li[data-v-bfd4d4b7],.rich-text--wrapper-markdown li.task-list-item>blockquote[data-v-bfd4d4b7],.rich-text--wrapper-markdown li.task-list-item>pre[data-v-bfd4d4b7]{margin-inline-start:15px;margin-block-end:0}.rich-text--wrapper-markdown pre[data-v-bfd4d4b7]{direction:ltr}.rich-text--wrapper-markdown table[data-v-bfd4d4b7]{border-collapse:collapse;border:2px solid var(--color-border-maxcontrast)}.rich-text--wrapper-markdown table th[data-v-bfd4d4b7],.rich-text--wrapper-markdown table td[data-v-bfd4d4b7]{padding:var(--default-grid-baseline);border:1px solid var(--color-border-maxcontrast)}.rich-text--wrapper-markdown table th[data-v-bfd4d4b7]:first-child,.rich-text--wrapper-markdown table td[data-v-bfd4d4b7]:first-child{border-inline-start:0}.rich-text--wrapper-markdown table th[data-v-bfd4d4b7]:last-child,.rich-text--wrapper-markdown table td[data-v-bfd4d4b7]:last-child{border-inline-end:0}.rich-text--wrapper-markdown table tr:first-child th[data-v-bfd4d4b7]{border-top:0}.rich-text--wrapper-markdown table tr:last-child td[data-v-bfd4d4b7]{border-block-end:0}.rich-text--wrapper-markdown pre[data-v-bfd4d4b7]:has(.hljs){color:var(--hljs-color);background:var(--hljs-background-color)}.rich-text--wrapper-markdown .hljs-doctag[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-keyword[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-meta .hljs-keyword[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-template-tag[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-template-variable[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-type[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-variable.language_[data-v-bfd4d4b7]{color:var(--hljs-syntax-keyword-color)}.rich-text--wrapper-markdown .hljs-title[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-title.class_[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-title.class_.inherited__[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-title.function_[data-v-bfd4d4b7]{color:var(--hljs-syntax-entity-color)}.rich-text--wrapper-markdown .hljs-attr[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-attribute[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-literal[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-meta[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-number[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-operator[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-variable[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-selector-attr[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-selector-class[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-selector-id[data-v-bfd4d4b7]{color:var(--hljs-syntax-constant-color)}.rich-text--wrapper-markdown .hljs-regexp[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-string[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-meta .hljs-string[data-v-bfd4d4b7]{color:var(--hljs-syntax-string-color)}.rich-text--wrapper-markdown .hljs-built_in[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-symbol[data-v-bfd4d4b7]{color:var(--hljs-syntax-variable-color)}.rich-text--wrapper-markdown .hljs-comment[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-code[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-formula[data-v-bfd4d4b7]{color:var(--hljs-syntax-comment-color)}.rich-text--wrapper-markdown .hljs-name[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-quote[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-selector-tag[data-v-bfd4d4b7],.rich-text--wrapper-markdown .hljs-selector-pseudo[data-v-bfd4d4b7]{color:var(--hljs-syntax-entity-tag-color)}.rich-text--wrapper-markdown .hljs-subst[data-v-bfd4d4b7]{color:var(--hljs-syntax-storage-modifier-import-color)}.rich-text--wrapper-markdown .hljs-section[data-v-bfd4d4b7]{color:var(--hljs-syntax-markup-heading-color);font-weight:700}.rich-text--wrapper-markdown .hljs-bullet[data-v-bfd4d4b7]{color:var(--hljs-syntax-markup-list-color)}.rich-text--wrapper-markdown .hljs-emphasis[data-v-bfd4d4b7]{color:var(--hljs-syntax-markup-italic-color);font-style:italic}.rich-text--wrapper-markdown .hljs-strong[data-v-bfd4d4b7]{color:var(--hljs-syntax-markup-bold-color);font-weight:700}.rich-text--wrapper-markdown .hljs-addition[data-v-bfd4d4b7]{color:var(--hljs-syntax-markup-inserted-color);background-color:var(--hljs-syntax-markup-inserted-background-color)}.rich-text--wrapper-markdown .hljs-deletion[data-v-bfd4d4b7]{color:var(--hljs-syntax-markup-deleted-color);background-color:var(--hljs-syntax-markup-deleted-background-color)}a[data-v-bfd4d4b7]:not(.rich-text--component){text-decoration:underline}@media (prefers-color-scheme: light){.rich-text--wrapper-markdown[data-v-bfd4d4b7]{--hljs-color: var(--color-main-text, #24292e);--hljs-background-color: var(--color-background-dark, #ffffff);--hljs-syntax-keyword-color: #d73a49;--hljs-syntax-entity-color: #6f42c1;--hljs-syntax-constant-color: #005cc5;--hljs-syntax-string-color: #032f62;--hljs-syntax-variable-color: #e36209;--hljs-syntax-comment-color: #6a737d;--hljs-syntax-entity-tag-color: #22863a;--hljs-syntax-storage-modifier-import-color: #24292e;--hljs-syntax-markup-heading-color: #005cc5;--hljs-syntax-markup-list-color: #735c0f;--hljs-syntax-markup-italic-color: #24292e;--hljs-syntax-markup-bold-color: #24292e;--hljs-syntax-markup-inserted-color: #22863a;--hljs-syntax-markup-inserted-background-color: #f0fff4;--hljs-syntax-markup-deleted-color: #b31d28;--hljs-syntax-markup-deleted-background-color: #ffeef0}[data-theme-dark] .rich-text--wrapper-markdown[data-v-bfd4d4b7]{--hljs-color: var(--color-main-text, #c9d1d9);--hljs-background-color: var(--color-background-dark, #0d1117);--hljs-syntax-keyword-color: #ff7b72;--hljs-syntax-entity-color: #d2a8ff;--hljs-syntax-constant-color: #79c0ff;--hljs-syntax-string-color: #a5d6ff;--hljs-syntax-variable-color: #ffa657;--hljs-syntax-comment-color: #8b949e;--hljs-syntax-entity-tag-color: #7ee787;--hljs-syntax-storage-modifier-import-color: #c9d1d9;--hljs-syntax-markup-heading-color: #1f6feb;--hljs-syntax-markup-list-color: #f2cc60;--hljs-syntax-markup-italic-color: #c9d1d9;--hljs-syntax-markup-bold-color: #c9d1d9;--hljs-syntax-markup-inserted-color: #aff5b4;--hljs-syntax-markup-inserted-background-color: #033a16;--hljs-syntax-markup-deleted-color: #ffdcd7;--hljs-syntax-markup-deleted-background-color: #67060c}}@media (prefers-color-scheme: dark){.rich-text--wrapper-markdown[data-v-bfd4d4b7]{--hljs-color: var(--color-main-text, #c9d1d9);--hljs-background-color: var(--color-background-dark, #0d1117);--hljs-syntax-keyword-color: #ff7b72;--hljs-syntax-entity-color: #d2a8ff;--hljs-syntax-constant-color: #79c0ff;--hljs-syntax-string-color: #a5d6ff;--hljs-syntax-variable-color: #ffa657;--hljs-syntax-comment-color: #8b949e;--hljs-syntax-entity-tag-color: #7ee787;--hljs-syntax-storage-modifier-import-color: #c9d1d9;--hljs-syntax-markup-heading-color: #1f6feb;--hljs-syntax-markup-list-color: #f2cc60;--hljs-syntax-markup-italic-color: #c9d1d9;--hljs-syntax-markup-bold-color: #c9d1d9;--hljs-syntax-markup-inserted-color: #aff5b4;--hljs-syntax-markup-inserted-background-color: #033a16;--hljs-syntax-markup-deleted-color: #ffdcd7;--hljs-syntax-markup-deleted-background-color: #67060c}[data-theme-light] .rich-text--wrapper-markdown[data-v-bfd4d4b7]{--hljs-color: var(--color-main-text, #24292e);--hljs-background-color: var(--color-background-dark, #ffffff);--hljs-syntax-keyword-color: #d73a49;--hljs-syntax-entity-color: #6f42c1;--hljs-syntax-constant-color: #005cc5;--hljs-syntax-string-color: #032f62;--hljs-syntax-variable-color: #e36209;--hljs-syntax-comment-color: #6a737d;--hljs-syntax-entity-tag-color: #22863a;--hljs-syntax-storage-modifier-import-color: #24292e;--hljs-syntax-markup-heading-color: #005cc5;--hljs-syntax-markup-list-color: #735c0f;--hljs-syntax-markup-italic-color: #24292e;--hljs-syntax-markup-bold-color: #24292e;--hljs-syntax-markup-inserted-color: #22863a;--hljs-syntax-markup-inserted-background-color: #f0fff4;--hljs-syntax-markup-deleted-color: #b31d28;--hljs-syntax-markup-deleted-background-color: #ffeef0}}.nc-select-users[data-v-4fbb6472] .vs__selected{padding-inline:0 5px!important}.material-design-icon[data-v-9cedb949]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.settings-section[data-v-9cedb949]{display:block;padding:0 0 calc(var(--default-grid-baseline) * 5) 0;margin:calc(var(--default-grid-baseline) * 7);width:min(900px,100% - var(--default-grid-baseline) * 7 * 2)}.settings-section[data-v-9cedb949]:not(:last-child){border-bottom:1px solid var(--color-border)}.settings-section__name[data-v-9cedb949]{display:inline-flex;align-items:center;justify-content:center;max-width:900px;margin-top:0}.settings-section__info[data-v-9cedb949]{display:flex;align-items:center;justify-content:center;width:var(--default-clickable-area);height:var(--default-clickable-area);margin:calc((var(--default-clickable-area) - 16px) / 2 * -1);margin-inline-start:0;color:var(--color-text-maxcontrast)}.settings-section__info[data-v-9cedb949]:hover,.settings-section__info[data-v-9cedb949]:focus,.settings-section__info[data-v-9cedb949]:active{color:var(--color-main-text)}.settings-section__desc[data-v-9cedb949]{margin-top:-.2em;margin-bottom:1em;color:var(--color-text-maxcontrast);max-width:900px}.material-design-icon[data-v-21e2bf0c]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.select-group-error[data-v-21e2bf0c]{color:var(--color-text-error, var(--color-error));font-size:13px;padding-inline-start:var(--border-radius-element)}.material-design-icon[data-v-808cdfc6]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.textarea[data-v-808cdfc6]{--input-border-color: var(--color-border-maxcontrast);--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));position:relative;width:100%;border-radius:var(--border-radius-element);margin-block-start:6px;resize:vertical}.textarea--disabled[data-v-808cdfc6]{opacity:.7;filter:saturate(.7)}.textarea__main-wrapper[data-v-808cdfc6]{height:calc(var(--default-clickable-area) * 2);padding:var(--border-width-input, 2px);position:relative}.textarea__main-wrapper[data-v-808cdfc6]:not(:has([disabled])):has(textarea:focus),.textarea__main-wrapper[data-v-808cdfc6]:not(:has([disabled])):has(textarea:active){padding:0}.textarea__input[data-v-808cdfc6]{margin:0;padding-block:calc(10px + var(--input-border-width-offset));padding-inline:calc(12px - var(--border-width-input, 2px) + var(--input-border-width-offset));width:100%;font-size:var(--default-font-size);text-overflow:ellipsis;cursor:pointer;background-color:var(--color-main-background);color:var(--color-main-text);border:none;border-radius:var(--border-radius-element);box-shadow:0 -1px var(--input-border-color),0 0 0 1px color-mix(in srgb,var(--input-border-color),65% transparent)}.textarea__input[data-v-808cdfc6]:hover:not([disabled]){box-shadow:0 0 0 1px var(--input-border-color)}.textarea__input[data-v-808cdfc6]:active:not([disabled]),.textarea__input[data-v-808cdfc6]:focus:not([disabled]){--input-border-width-offset: 0px;--input-border-color: var(--color-main-text);border:var(--border-width-input-focused, 2px) solid var(--input-border-color);box-shadow:0 0 0 2px var(--color-main-background)!important}.textarea__input[data-v-808cdfc6]:not(:focus,.textarea__input--label-outside)::placeholder{opacity:0}.textarea__input[data-v-808cdfc6]:focus{cursor:text}.textarea__input[data-v-808cdfc6]:disabled{cursor:default}.textarea__input[data-v-808cdfc6]:focus-visible{box-shadow:unset!important}.textarea__input--success[data-v-808cdfc6]{--input-border-color: var(--color-border-success, var(--color-success)) !important}.textarea__input--success[data-v-808cdfc6]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.textarea__input--error[data-v-808cdfc6]{--input-border-color: var(--color-border-error, var(--color-error)) !important}.textarea__input--error[data-v-808cdfc6]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.textarea__label[data-v-808cdfc6]{position:absolute;margin-inline:12px 0;max-width:fit-content;inset-block-start:11px;inset-inline:0;color:var(--color-text-maxcontrast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick),background-color var(--animation-quick) var(--animation-slow)}.textarea__input:focus+.textarea__label[data-v-808cdfc6],.textarea__input:not(:placeholder-shown)+.textarea__label[data-v-808cdfc6]{inset-block-start:-10px;line-height:1.5;font-size:13px;font-weight:500;color:var(--color-main-text);background-color:var(--color-main-background);padding-inline:4px;margin-inline-start:8px;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick)}.textarea__helper-text-message[data-v-808cdfc6]{padding-block:4px;display:flex;align-items:center}.textarea__helper-text-message__icon[data-v-808cdfc6]{margin-inline-end:8px}.textarea__helper-text-message--error[data-v-808cdfc6]{color:var(--color-error-text)}.textarea__helper-text-message--success[data-v-808cdfc6]{color:var(--color-success-text)}.textarea--legacy .textarea__input[data-v-808cdfc6]{box-shadow:0 0 0 1px var(--input-border-color)}.textarea--legacy .textarea__main-wrapper[data-v-808cdfc6]:hover:not(:has([disabled])){padding:0}.textarea--legacy .textarea__main-wrapper:hover:not(:has([disabled])) .textarea__input[data-v-808cdfc6]{--input-border-color: var(--color-main-text);--input-border-width-offset: 0px;border:var(--border-width-input-focused, 2px) solid var(--input-border-color);box-shadow:0 0 0 2px var(--color-main-background)!important}.material-design-icon[data-v-37bde6b7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.user-bubble__wrapper[data-v-37bde6b7]{display:inline-block;vertical-align:middle;min-width:0;max-width:100%}.user-bubble__content[data-v-37bde6b7]{display:inline-flex;max-width:100%;background-color:var(--color-background-dark)}.user-bubble__content--primary[data-v-37bde6b7]{color:var(--color-primary-element-text);background-color:var(--color-primary-element)}.user-bubble__content[data-v-37bde6b7]>:last-child{padding-inline-end:8px}.user-bubble__avatar[data-v-37bde6b7]{align-self:center}.user-bubble__name[data-v-37bde6b7]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.user-bubble__name[data-v-37bde6b7],.user-bubble__secondary[data-v-37bde6b7]{padding-block:0;padding-inline:4px 0}div[data-v-d275e202]{display:flex;flex-wrap:wrap;gap:12px;padding-inline-end:12px}.info-note[data-v-d275e202]{justify-self:stretch}.material-design-icon[data-v-cfa76919]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.checkbox-content[data-v-cfa76919]{display:flex;align-items:center;flex-direction:row;gap:var(--default-grid-baseline);-webkit-user-select:none;user-select:none;min-height:var(--default-clickable-area);border-radius:var(--checkbox-radio-switch--border-radius);padding:var(--default-grid-baseline) calc((var(--default-clickable-area) - var(--icon-height)) / 2);width:100%;max-width:fit-content}.checkbox-content__wrapper[data-v-cfa76919]{flex:1 0}.checkbox-content__text[data-v-cfa76919]:empty{display:none}.checkbox-content-checkbox:not(.checkbox-content--button-variant) .checkbox-content__icon[data-v-cfa76919],.checkbox-content-radio:not(.checkbox-content--button-variant) .checkbox-content__icon[data-v-cfa76919],.checkbox-content-switch:not(.checkbox-content--button-variant) .checkbox-content__icon[data-v-cfa76919]{margin-block:calc((var(--default-clickable-area) - 2 * var(--default-grid-baseline) - var(--icon-height)) / 2) auto}.checkbox-content-checkbox:not(.checkbox-content--button-variant) .checkbox-content__icon--has-description[data-v-cfa76919],.checkbox-content-radio:not(.checkbox-content--button-variant) .checkbox-content__icon--has-description[data-v-cfa76919],.checkbox-content-switch:not(.checkbox-content--button-variant) .checkbox-content__icon--has-description[data-v-cfa76919]{display:flex;align-items:center;margin-block-end:0;align-self:start}.checkbox-content__icon>*[data-v-cfa76919]{width:var(--icon-size);height:var(--icon-height);color:var(--color-primary-element)}.checkbox-content__description[data-v-cfa76919]{display:block;color:var(--color-text-maxcontrast)}.checkbox-content--button-variant .checkbox-content__icon:not(.checkbox-content__icon--checked)>*[data-v-cfa76919]{color:var(--color-primary-element)}.checkbox-content--button-variant .checkbox-content__icon--checked>*[data-v-cfa76919]{color:var(--color-primary-element-text)}.checkbox-content--has-text[data-v-cfa76919]{padding-right:calc((var(--default-clickable-area) - 16px) / 2)}.checkbox-content[data-v-cfa76919],.checkbox-content *[data-v-cfa76919]{cursor:pointer;flex-shrink:0}.material-design-icon[data-v-24ed12a5]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.checkbox-radio-switch[data-v-24ed12a5]{--icon-size: var(--1f97b3de);--icon-height: var(--be84d992);display:flex;align-items:center;color:var(--color-main-text);background-color:transparent;box-sizing:border-box;font-size:var(--default-font-size);line-height:var(--default-line-height);padding:0;position:relative}.checkbox-radio-switch *[data-v-24ed12a5]{box-sizing:border-box}.checkbox-radio-switch__input[data-v-24ed12a5]{position:absolute;z-index:-1;opacity:0!important;width:var(--icon-size);height:var(--icon-size);margin:4px calc((var(--default-clickable-area) - 16px) / 2)}.checkbox-radio-switch__input:focus-visible+.checkbox-radio-switch__content[data-v-24ed12a5],.checkbox-radio-switch__input[data-v-24ed12a5]:focus-visible{outline:2px solid var(--color-main-text);border-color:var(--color-main-background);outline-offset:-2px}.checkbox-radio-switch--disabled .checkbox-radio-switch__content[data-v-24ed12a5]{opacity:.5}.checkbox-radio-switch--disabled .checkbox-radio-switch__content[data-v-24ed12a5] .checkbox-radio-switch__icon>*{color:var(--color-main-text)}.checkbox-radio-switch--disabled .checkbox-radio-switch__content.checkbox-content[data-v-24ed12a5],.checkbox-radio-switch--disabled .checkbox-radio-switch__content.checkbox-content[data-v-24ed12a5] *:not(a){cursor:default!important}.checkbox-radio-switch:not(.checkbox-radio-switch--disabled,.checkbox-radio-switch--checked):focus-within .checkbox-radio-switch__content[data-v-24ed12a5],.checkbox-radio-switch:not(.checkbox-radio-switch--disabled,.checkbox-radio-switch--checked) .checkbox-radio-switch__content[data-v-24ed12a5]:hover{background-color:var(--color-background-hover)}.checkbox-radio-switch--checked:not(.checkbox-radio-switch--disabled):focus-within .checkbox-radio-switch__content[data-v-24ed12a5],.checkbox-radio-switch--checked:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__content[data-v-24ed12a5]:hover{background-color:var(--color-primary-element-hover)}.checkbox-radio-switch--checked:not(.checkbox-radio-switch--button-variant):not(.checkbox-radio-switch--disabled):focus-within .checkbox-radio-switch__content[data-v-24ed12a5],.checkbox-radio-switch--checked:not(.checkbox-radio-switch--button-variant):not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__content[data-v-24ed12a5]:hover{background-color:var(--color-primary-element-light-hover)}.checkbox-radio-switch-switch[data-v-24ed12a5]:not(.checkbox-radio-switch--checked) .checkbox-radio-switch__icon>*{color:var(--color-text-maxcontrast)}.checkbox-radio-switch-switch.checkbox-radio-switch--disabled.checkbox-radio-switch--checked[data-v-24ed12a5] .checkbox-radio-switch__icon>*{color:var(--color-primary-element-light)}.checkbox-radio-switch[data-v-24ed12a5]{--checkbox-radio-switch--border-radius: var(--border-radius-element, calc(var(--default-clickable-area) / 2));--checkbox-radio-switch--border-radius-outer: calc(var(--checkbox-radio-switch--border-radius) + 2px)}.checkbox-radio-switch--button-variant.checkbox-radio-switch[data-v-24ed12a5]{background-color:var(--color-main-background);border:2px solid var(--color-border-maxcontrast);overflow:hidden}.checkbox-radio-switch--button-variant.checkbox-radio-switch--checked[data-v-24ed12a5]{font-weight:700}.checkbox-radio-switch--button-variant.checkbox-radio-switch--checked .checkbox-radio-switch__content[data-v-24ed12a5]{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.checkbox-radio-switch--button-variant[data-v-24ed12a5] .checkbox-radio-switch__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.checkbox-radio-switch--button-variant[data-v-24ed12a5]:not(.checkbox-radio-switch--checked) .checkbox-radio-switch__icon>*{color:var(--color-main-text)}.checkbox-radio-switch--button-variant[data-v-24ed12a5] .checkbox-radio-switch__icon:empty{display:none}.checkbox-radio-switch--button-variant[data-v-24ed12a5]:not(.checkbox-radio-switch--button-variant-v-grouped):not(.checkbox-radio-switch--button-variant-h-grouped),.checkbox-radio-switch--button-variant .checkbox-radio-switch__content[data-v-24ed12a5]{border-radius:var(--checkbox-radio-switch--border-radius)}.checkbox-radio-switch--button-variant-v-grouped .checkbox-radio-switch__content[data-v-24ed12a5]{flex-basis:100%;max-width:unset}.checkbox-radio-switch--button-variant-v-grouped[data-v-24ed12a5]:first-of-type{border-start-start-radius:var(--checkbox-radio-switch--border-radius-outer);border-start-end-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-v-grouped[data-v-24ed12a5]:last-of-type{border-end-start-radius:var(--checkbox-radio-switch--border-radius-outer);border-end-end-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-v-grouped[data-v-24ed12a5]:not(:last-of-type){border-bottom:0!important}.checkbox-radio-switch--button-variant-v-grouped:not(:last-of-type) .checkbox-radio-switch__content[data-v-24ed12a5]{margin-bottom:2px}.checkbox-radio-switch--button-variant-v-grouped[data-v-24ed12a5]:not(:first-of-type){border-top:0!important}.checkbox-radio-switch--button-variant-h-grouped[data-v-24ed12a5]:first-of-type{border-start-start-radius:var(--checkbox-radio-switch--border-radius-outer);border-end-start-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-h-grouped[data-v-24ed12a5]:last-of-type{border-start-end-radius:var(--checkbox-radio-switch--border-radius-outer);border-end-end-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-h-grouped[data-v-24ed12a5]:not(:last-of-type){border-inline-end:0!important}.checkbox-radio-switch--button-variant-h-grouped:not(:last-of-type) .checkbox-radio-switch__content[data-v-24ed12a5]{margin-inline-end:2px}.checkbox-radio-switch--button-variant-h-grouped[data-v-24ed12a5]:not(:first-of-type){border-inline-start:0!important}.checkbox-radio-switch--button-variant-h-grouped[data-v-24ed12a5] .checkbox-radio-switch__text{text-align:center;display:flex;align-items:center}.checkbox-radio-switch--button-variant-h-grouped .checkbox-radio-switch__content[data-v-24ed12a5]{flex-direction:column;justify-content:center;width:100%;margin:0;gap:0}fieldset[data-v-3776f069],fieldset[data-v-5cdafc84],fieldset[data-v-7a80aa67]{padding:6px}.trace__position[data-v-fc2bb3ab]{display:flex}.trace__file[data-v-fc2bb3ab]{font-style:italic}.trace__line[data-v-fc2bb3ab]:before{content:"-";padding-inline:6px}.trace__line[data-v-fc2bb3ab]:after{content:":"}.stack-trace li[data-v-2dba9c9f]:not(:last-child){margin-block-end:.5rem}.exception[data-v-a89fd782]{display:flex;align-items:start}.exception__title[data-v-a89fd782]{font-weight:700;white-space:normal}.exception__message[data-v-a89fd782]{margin-inline-start:6px;overflow:hidden;text-overflow:ellipsis}.exception__trace[data-v-a89fd782]{margin-inline-start:2em}/*! + Theme: Material Darker + Author: Nate Peterson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#eff;background:#212121}.hljs::selection,.hljs ::selection{background-color:#353535;color:#eff}.hljs-comment{color:#4a4a4a}.hljs-tag{color:#b2ccd6}.hljs-subst,.hljs-punctuation,.hljs-operator{color:#eff}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-variable,.hljs-template-variable,.hljs-selector-tag,.hljs-name,.hljs-deletion{color:#f07178}.hljs-symbol,.hljs-number,.hljs-link,.hljs-attr,.hljs-variable.constant_,.hljs-literal{color:#f78c6c}.hljs-title,.hljs-class .hljs-title,.hljs-title.class_{color:#ffcb6b}.hljs-strong{font-weight:700;color:#ffcb6b}.hljs-code,.hljs-addition,.hljs-title.class_.inherited__,.hljs-string{color:#c3e88d}.hljs-built_in,.hljs-doctag,.hljs-quote,.hljs-keyword.hljs-atrule,.hljs-regexp{color:#89ddff}.hljs-function .hljs-title,.hljs-attribute,.ruby .hljs-property,.hljs-title.function_,.hljs-section{color:#82aaff}.hljs-type,.hljs-template-tag,.diff .hljs-meta,.hljs-keyword{color:#c792ea}.hljs-emphasis{color:#c792ea;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ff5370}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}.log-details[data-v-c0dea491]{padding:12px}.log-details__raw[data-v-c0dea491],.log-details__exception[data-v-c0dea491]{padding-block-start:12px}.log-details__info[data-v-c0dea491]{display:flex;justify-content:space-between;border-block-end:4px solid;padding-inline-end:50px;padding-block:13px 4px;margin-block-end:13px}.log-details__info dt[data-v-c0dea491],.log-details__info dd[data-v-c0dea491]{padding:0}.log-details__info dt[data-v-c0dea491]{font-weight:700}.log-details__info dt[data-v-c0dea491]:after{content:":"}.log-details__info--debug[data-v-c0dea491]{border-block-end-color:var(--color-border-maxcontrast)}.log-details__info--info[data-v-c0dea491]{border-block-end-color:var(--color-info)}.log-details__info--warning[data-v-c0dea491]{border-block-end-color:var(--color-warning)}.log-details__info--error[data-v-c0dea491],.log-details__info--fatal[data-v-c0dea491]{border-block-end-color:var(--color-error)}.log-details__actions[data-v-c0dea491]{display:flex;flex-wrap:wrap;align-items:center;justify-content:end;gap:9px;margin-block:9px}.log-details hr[data-v-c0dea491]{color:var(--color-border-dark)}.hljs[data-v-c0dea491]{background-color:var(--color-background-dark);border-radius:var(--border-radius-large)}@media only screen and (max-width: 399px){.log-details__info[data-v-c0dea491]{display:block}.log-details dd[data-v-c0dea491]{margin-inline-start:12px}}.material-design-icon[data-v-ca30a94e]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}button[data-v-ca30a94e]:not(.button-vue),input[data-v-ca30a94e]:not([type=range]),textarea[data-v-ca30a94e]{margin:0;padding:7px 6px;cursor:text;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-ca30a94e]:not(.button-vue):not(:disabled):not(.primary):hover,button[data-v-ca30a94e]:not(.button-vue):not(:disabled):not(.primary):focus,button:not(.button-vue):not(:disabled):not(.primary).active[data-v-ca30a94e],input[data-v-ca30a94e]:not([type=range]):not(:disabled):not(.primary):hover,input[data-v-ca30a94e]:not([type=range]):not(:disabled):not(.primary):focus,input:not([type=range]):not(:disabled):not(.primary).active[data-v-ca30a94e],textarea[data-v-ca30a94e]:not(:disabled):not(.primary):hover,textarea[data-v-ca30a94e]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-ca30a94e]{border-color:var(--color-primary-element);outline:none}button[data-v-ca30a94e]:not(.button-vue):not(:disabled):not(.primary):active,input[data-v-ca30a94e]:not([type=range]):not(:disabled):not(.primary):active,textarea[data-v-ca30a94e]:not(:disabled):not(.primary):active{color:var(--color-text-light);outline:none;background-color:var(--color-main-background)}button[data-v-ca30a94e]:not(.button-vue):disabled,input[data-v-ca30a94e]:not([type=range]):disabled,textarea[data-v-ca30a94e]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-ca30a94e]:not(.button-vue):required,input[data-v-ca30a94e]:not([type=range]):required,textarea[data-v-ca30a94e]:required{box-shadow:none}button[data-v-ca30a94e]:not(.button-vue):invalid,input[data-v-ca30a94e]:not([type=range]):invalid,textarea[data-v-ca30a94e]:invalid{border-color:var(--color-border-error, var(--color-error));box-shadow:none!important}button:not(.button-vue).primary[data-v-ca30a94e],input:not([type=range]).primary[data-v-ca30a94e],textarea.primary[data-v-ca30a94e]{cursor:pointer;color:var(--color-primary-element-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button:not(.button-vue).primary[data-v-ca30a94e]:not(:disabled):hover,button:not(.button-vue).primary[data-v-ca30a94e]:not(:disabled):focus,button:not(.button-vue).primary[data-v-ca30a94e]:not(:disabled):active,input:not([type=range]).primary[data-v-ca30a94e]:not(:disabled):hover,input:not([type=range]).primary[data-v-ca30a94e]:not(:disabled):focus,input:not([type=range]).primary[data-v-ca30a94e]:not(:disabled):active,textarea.primary[data-v-ca30a94e]:not(:disabled):hover,textarea.primary[data-v-ca30a94e]:not(:disabled):focus,textarea.primary[data-v-ca30a94e]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button:not(.button-vue).primary[data-v-ca30a94e]:not(:disabled):active,input:not([type=range]).primary[data-v-ca30a94e]:not(:disabled):active,textarea.primary[data-v-ca30a94e]:not(:disabled):active{color:var(--color-primary-element-text-dark)}button:not(.button-vue).primary[data-v-ca30a94e]:disabled,input:not([type=range]).primary[data-v-ca30a94e]:disabled,textarea.primary[data-v-ca30a94e]:disabled{cursor:default;color:var(--color-primary-element-text-dark);background-color:var(--color-primary-element)}li.action[data-v-ca30a94e]:hover,li.action.active[data-v-ca30a94e]{border-radius:6px;padding:0}li.action[data-v-ca30a94e]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-ca30a94e]{pointer-events:none;opacity:.5}.action--disabled[data-v-ca30a94e]:hover,.action--disabled[data-v-ca30a94e]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-ca30a94e]{opacity:1!important}.action-input[data-v-ca30a94e]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400}.action-input__icon-wrapper[data-v-ca30a94e]{display:flex;align-self:center;align-items:center;justify-content:center}.action-input__icon-wrapper[data-v-ca30a94e] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-input__icon-wrapper[data-v-ca30a94e] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-input>span[data-v-ca30a94e]{cursor:pointer;white-space:nowrap}.action-input__icon[data-v-ca30a94e]{min-width:0;min-height:0;padding:calc(var(--default-clickable-area) / 2) 0 calc(var(--default-clickable-area) / 2) var(--default-clickable-area);background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px}.action-input__form[data-v-ca30a94e]{display:flex;align-items:center;flex:1 1 auto;margin:4px 0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.action-input__container[data-v-ca30a94e]{position:relative;width:100%}.action-input__input-container[data-v-ca30a94e]{display:flex}.action-input__input-container .colorpicker__trigger[data-v-ca30a94e],.action-input__input-container .colorpicker__preview[data-v-ca30a94e]{width:100%}.action-input__input-container .colorpicker__preview[data-v-ca30a94e]{width:100%;height:36px;border-radius:var(--border-radius-large);border:2px solid var(--color-border-maxcontrast);box-shadow:none!important}.action-input__text-label[data-v-ca30a94e]{padding:4px 0;display:block}.action-input__text-label--hidden[data-v-ca30a94e]{position:absolute;inset-inline-start:0;width:1px;height:1px;overflow:hidden;z-index:-1;opacity:0}.action-input__datetimepicker[data-v-ca30a94e]{width:100%}.action-input__datetimepicker[data-v-ca30a94e] .mx-input{margin:0}.action-input__multi[data-v-ca30a94e]{width:100%}li:last-child>.action-input[data-v-ca30a94e]{padding-bottom:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}li:first-child>.action-input[data-v-ca30a94e]:not(.action-input--visible-label){padding-top:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}.material-design-icon[data-v-6c1feae8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.native-datetime-picker[data-v-6c1feae8]{display:flex;flex-direction:column}.native-datetime-picker .native-datetime-picker--label[data-v-6c1feae8]{margin-block-end:2px}.native-datetime-picker .native-datetime-picker--input[data-v-6c1feae8]{--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));width:100%;flex:0 0 auto;margin:0;padding-inline-start:calc(var(--border-radius-large) + var(--input-border-width-offset));padding-inline-end:calc(var(--default-grid-baseline) + var(--input-border-width-offset));border:var(--border-width-input, 2px) solid var(--color-border-maxcontrast)}.native-datetime-picker .native-datetime-picker--input[data-v-6c1feae8]:active:not([disabled]),.native-datetime-picker .native-datetime-picker--input[data-v-6c1feae8]:hover:not([disabled]),.native-datetime-picker .native-datetime-picker--input[data-v-6c1feae8]:focus:not([disabled]),.native-datetime-picker .native-datetime-picker--input[data-v-6c1feae8]:focus-within:not([disabled]){border-color:var(--color-main-text);border-width:var(--border-width-input-focused, 2px);box-shadow:0 0 0 2px var(--color-main-background)!important;--input-border-width-offset: 0px}[data-theme-light] .native-datetime-picker--input[data-v-6c1feae8],[data-themes*=light] .native-datetime-picker--input[data-v-6c1feae8]{color-scheme:light}[data-theme-dark] .native-datetime-picker--input[data-v-6c1feae8],[data-themes*=dark] .native-datetime-picker--input[data-v-6c1feae8]{color-scheme:dark}@media (prefers-color-scheme: light){[data-theme-default] .native-datetime-picker--input[data-v-6c1feae8],[data-themes*=default] .native-datetime-picker--input[data-v-6c1feae8]{color-scheme:light}}@media (prefers-color-scheme: dark){[data-theme-default] .native-datetime-picker--input[data-v-6c1feae8],[data-themes*=default] .native-datetime-picker--input[data-v-6c1feae8]{color-scheme:dark}}.material-design-icon[data-v-822eec9d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}[data-v-822eec9d] .password-field__input--secure-text{-webkit-text-security:disc}.material-design-icon[data-v-770f8cf7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.input-field[data-v-770f8cf7]{--input-border-color: var(--color-border-maxcontrast);--input-border-radius: var(--border-radius-element);--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));--input-padding-start: var(--border-radius-large);--input-padding-end: var(--border-radius-large);position:relative;width:100%;margin-block-start:6px}.input-field--disabled[data-v-770f8cf7]{opacity:.4;filter:saturate(.4)}.input-field--label-outside[data-v-770f8cf7]{margin-block-start:0}.input-field--leading-icon[data-v-770f8cf7]{--input-padding-start: calc(var(--default-clickable-area) - var(--default-grid-baseline))}.input-field--trailing-icon[data-v-770f8cf7]{--input-padding-end: calc(var(--default-clickable-area) - var(--default-grid-baseline))}.input-field--pill[data-v-770f8cf7]{--input-border-radius: var(--border-radius-pill)}.input-field__main-wrapper[data-v-770f8cf7]{height:var(--default-clickable-area);padding:var(--border-width-input, 2px);position:relative}.input-field__main-wrapper[data-v-770f8cf7]:not(:has([disabled])):has(input:focus),.input-field__main-wrapper[data-v-770f8cf7]:not(:has([disabled])):has(input:active){padding:0}.input-field__input[data-v-770f8cf7]{background-color:var(--color-main-background);color:var(--color-main-text);border:none;border-radius:var(--input-border-radius);box-shadow:0 -1px var(--input-border-color),0 0 0 1px color-mix(in srgb,var(--input-border-color),65% transparent);cursor:pointer;-webkit-appearance:textfield!important;-moz-appearance:textfield!important;appearance:textfield!important;font-size:var(--default-font-size);text-overflow:ellipsis;height:100%!important;min-height:unset;width:100%;padding-block:var(--input-border-width-offset);padding-inline:calc(var(--input-padding-start) + var(--input-border-width-offset)) calc(var(--input-padding-end) + var(--input-border-width-offset))}.input-field__input[data-v-770f8cf7]::placeholder{color:var(--color-text-maxcontrast)}.input-field__input[data-v-770f8cf7]::-webkit-search-cancel-button{display:none}.input-field__input[data-v-770f8cf7]::-webkit-search-decoration,.input-field__input[data-v-770f8cf7]::-webkit-search-results-button,.input-field__input[data-v-770f8cf7]::-webkit-search-results-decoration,.input-field__input[data-v-770f8cf7]::-ms-clear{display:none}.input-field__input[data-v-770f8cf7]:hover:not([disabled]){box-shadow:0 0 0 1px var(--input-border-color)}.input-field__input[data-v-770f8cf7]:active:not([disabled]),.input-field__input[data-v-770f8cf7]:focus:not([disabled]){--input-border-color: var(--color-main-text);--input-border-width-offset: 0px;border:var(--border-width-input-focused, 2px) solid var(--input-border-color);box-shadow:0 0 0 2px var(--color-main-background)!important}.input-field__input:focus+.input-field__label[data-v-770f8cf7],.input-field__input:hover:not(:placeholder-shown)+.input-field__label[data-v-770f8cf7]{color:var(--color-main-text)}.input-field__input[data-v-770f8cf7]:focus{cursor:text}.input-field__input[data-v-770f8cf7]:disabled{cursor:default}.input-field__input[data-v-770f8cf7]:focus-visible{box-shadow:unset!important}.input-field__input--success[data-v-770f8cf7]{border-color:var(--color-border-success, var(--color-success))!important}.input-field__input--success[data-v-770f8cf7]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.input-field__input--error[data-v-770f8cf7],.input-field__input[data-v-770f8cf7]:user-invalid{border-color:var(--color-border-error, var(--color-error))!important}.input-field__input--error[data-v-770f8cf7]:focus-visible,.input-field__input[data-v-770f8cf7]:user-invalid:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.input-field:not(.input-field--label-outside) .input-field__input[data-v-770f8cf7]:not(:focus)::placeholder{opacity:0}.input-field__label[data-v-770f8cf7]{--input-label-font-size: var(--default-font-size);position:absolute;margin-inline:var(--input-padding-start) var(--input-padding-end);max-width:fit-content;font-size:var(--input-label-font-size);inset-block-start:calc((var(--default-clickable-area) - 1lh) / 2);inset-inline:var(--border-width-input-focused, 2px);color:var(--color-text-maxcontrast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick),background-color var(--animation-quick) var(--animation-slow)}.input-field__input:focus+.input-field__label[data-v-770f8cf7],.input-field__input:not(:placeholder-shown)+.input-field__label[data-v-770f8cf7]{--input-label-font-size: 13px;line-height:1.5;inset-block-start:calc(-1.5 * var(--input-label-font-size) / 2);font-weight:500;border-radius:var(--default-grid-baseline) var(--default-grid-baseline) 0 0;background-color:var(--color-main-background);padding-inline:var(--default-grid-baseline);margin-inline:calc(var(--input-padding-start) - var(--default-grid-baseline)) calc(var(--input-padding-end) - var(--default-grid-baseline));transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick)}.input-field__icon[data-v-770f8cf7]{position:absolute;height:var(--default-clickable-area);width:var(--default-clickable-area);display:flex;align-items:center;justify-content:center;opacity:.7;inset-block-end:0}.input-field__icon--leading[data-v-770f8cf7]{inset-inline-start:0px}.input-field__icon--trailing[data-v-770f8cf7]{inset-inline-end:0px}.input-field__trailing-button[data-v-770f8cf7]{--button-size: calc(var(--default-clickable-area) - 2 * var(--border-width-input-focused, 2px)) !important;--button-radius: calc(var(--input-border-radius) - var(--border-width-input-focused, 2px))}.input-field__trailing-button.button-vue[data-v-770f8cf7]{position:absolute;top:var(--border-width-input-focused, 2px);inset-inline-end:var(--border-width-input-focused, 2px)}.input-field__trailing-button.button-vue[data-v-770f8cf7]:focus-visible{box-shadow:none!important}.input-field__helper-text-message[data-v-770f8cf7]{padding-block:4px;padding-inline:var(--border-radius-large);display:flex;align-items:center;color:var(--color-text-maxcontrast)}.input-field__helper-text-message__icon[data-v-770f8cf7]{margin-inline-end:8px}.input-field__helper-text-message--error[data-v-770f8cf7]{color:var(--color-text-error, var(--color-error))}.input-field--error .input-field__input[data-v-770f8cf7],.input-field__input[data-v-770f8cf7]:user-invalid{--input-border-color: var(--color-border-error, var(--color-error)) !important}.input-field--error .input-field__input[data-v-770f8cf7]:focus-visible,.input-field__input[data-v-770f8cf7]:user-invalid:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.input-field--success .input-field__input[data-v-770f8cf7]{--input-border-color: var(--color-border-success, var(--color-success)) !important}.input-field--success .input-field__input[data-v-770f8cf7]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.input-field--legacy .input-field__input[data-v-770f8cf7]{box-shadow:0 0 0 1px var(--input-border-color) inset}.input-field--legacy .input-field__main-wrapper[data-v-770f8cf7]:hover:not(:has([disabled])){padding:0}.input-field--legacy .input-field__main-wrapper:hover:not(:has([disabled])) .input-field__input[data-v-770f8cf7]{--input-border-color: var(--color-main-text);--input-border-width-offset: 0px;border:var(--border-width-input-focused, 2px) solid var(--input-border-color);box-shadow:0 0 0 2px var(--color-main-background)!important}.log-table-header__wrapper[data-v-56a91c00]{display:flex;align-items:center;justify-content:space-between}.log-table-header__text[data-v-56a91c00]{padding-inline-start:12px}th[data-v-56a91c00] .button-vue__wrapper{justify-content:left}th>*[data-v-56a91c00]{padding-inline:6px 2px}.material-design-icon[data-v-595cfbf9]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-595cfbf9]:hover,li.action.active[data-v-595cfbf9]{border-radius:6px;padding:0}li.action[data-v-595cfbf9]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-595cfbf9]{pointer-events:none;opacity:.5}.action--disabled[data-v-595cfbf9]:hover,.action--disabled[data-v-595cfbf9]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-595cfbf9]{opacity:1!important}.action-button[data-v-595cfbf9]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-button>span[data-v-595cfbf9]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-595cfbf9]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-button[data-v-595cfbf9] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-button[data-v-595cfbf9] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-button__longtext-wrapper[data-v-595cfbf9],.action-button__longtext[data-v-595cfbf9]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-button__longtext[data-v-595cfbf9]{cursor:pointer;white-space:pre-wrap!important}.action-button__name[data-v-595cfbf9]{font-weight:700;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-button__description[data-v-595cfbf9]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-button__menu-icon[data-v-595cfbf9],.action-button__pressed-icon[data-v-595cfbf9]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action-button *[data-v-595cfbf9]{cursor:pointer}td[data-v-d173559c]{display:block;overflow:hidden;text-overflow:ellipsis;min-height:42px;padding-block-start:4px;padding-inline:18px 0}.row-message__container[data-v-d173559c]{display:flex;justify-content:space-between;justify-items:start}.row-message__container--expanded[data-v-d173559c]{margin-block-end:.5rem}.row-message__text[data-v-d173559c]{display:flex;flex-direction:column;width:calc(100% - 48px)}.row-message__text_message[data-v-d173559c]{overflow:hidden;text-overflow:ellipsis;width:100%}.row-message__action[data-v-d173559c]{padding:2px}tr[data-v-d173559c]{display:flex}tr.expanded[data-v-d173559c],tr.expanded .row-message--text[data-v-d173559c]{white-space:normal}.logging-level[data-v-d173559c]{border-inline-start:4px solid}.logging-level--debug[data-v-d173559c]{border-inline-start-color:var(--color-border-maxcontrast)}.logging-level--info[data-v-d173559c]{border-inline-start-color:var(--color-info)}.logging-level--warning[data-v-d173559c]{border-inline-start-color:var(--color-warning)}.logging-level--error[data-v-d173559c],.logging-level--fatal[data-v-d173559c]{border-inline-start-color:var(--color-error)}.log-table[data-v-69db1f77]{width:100%;height:100%;overflow:hidden}.log-table__table[data-v-69db1f77]{width:calc(100% - 12px);margin-inline:6px;table-layout:fixed;display:block;overflow:auto;height:100%;will-change:scroll-position}.log-table__load-more[data-v-69db1f77]{display:flex}.log-table__load-more[data-v-69db1f77] td{flex-basis:100%;text-align:center;padding-block:4px}.log-table__header[data-v-69db1f77],.log-table__body[data-v-69db1f77],.log-table__footer[data-v-69db1f77]{display:flex;flex-direction:column;width:100%}.log-table__header[data-v-69db1f77] tr,.log-table__body[data-v-69db1f77] tr,.log-table__footer[data-v-69db1f77] tr{display:flex}.log-table__header[data-v-69db1f77] th,.log-table__header[data-v-69db1f77] td,.log-table__body[data-v-69db1f77] th,.log-table__body[data-v-69db1f77] td,.log-table__footer[data-v-69db1f77] th,.log-table__footer[data-v-69db1f77] td{flex-shrink:0}.log-table__header[data-v-69db1f77] th:nth-child(1),.log-table__header[data-v-69db1f77] td:nth-child(1),.log-table__body[data-v-69db1f77] th:nth-child(1),.log-table__body[data-v-69db1f77] td:nth-child(1),.log-table__footer[data-v-69db1f77] th:nth-child(1),.log-table__footer[data-v-69db1f77] td:nth-child(1){width:108px}.log-table__header[data-v-69db1f77] th:nth-child(2),.log-table__header[data-v-69db1f77] td:nth-child(2),.log-table__body[data-v-69db1f77] th:nth-child(2),.log-table__body[data-v-69db1f77] td:nth-child(2),.log-table__footer[data-v-69db1f77] th:nth-child(2),.log-table__footer[data-v-69db1f77] td:nth-child(2){width:168px}.log-table__header[data-v-69db1f77] th:nth-child(3),.log-table__header[data-v-69db1f77] td:nth-child(3),.log-table__body[data-v-69db1f77] th:nth-child(3),.log-table__body[data-v-69db1f77] td:nth-child(3),.log-table__footer[data-v-69db1f77] th:nth-child(3),.log-table__footer[data-v-69db1f77] td:nth-child(3){width:418px;flex-grow:1}.log-table__header[data-v-69db1f77] th:nth-child(4),.log-table__header[data-v-69db1f77] td:nth-child(4),.log-table__body[data-v-69db1f77] th:nth-child(4),.log-table__body[data-v-69db1f77] td:nth-child(4),.log-table__footer[data-v-69db1f77] th:nth-child(4),.log-table__footer[data-v-69db1f77] td:nth-child(4){width:25ch}.log-table__header[data-v-69db1f77] th:last-child,.log-table__header[data-v-69db1f77] td:last-child,.log-table__body[data-v-69db1f77] th:last-child,.log-table__body[data-v-69db1f77] td:last-child,.log-table__footer[data-v-69db1f77] th:last-child,.log-table__footer[data-v-69db1f77] td:last-child{width:62px}.log-table__header[data-v-69db1f77]{position:sticky;top:0;z-index:1;min-height:44px}.log-table__header[data-v-69db1f77] th{position:sticky;top:0;z-index:99;background-color:var(--color-main-background);border-bottom:2px solid var(--color-border-dark)}.log-table__body[data-v-69db1f77]:before{content:"‌";display:block;line-height:6px;text-indent:-99999px}.log-table__row[data-v-69db1f77]{min-height:42px}/*! +* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors +* SPDX-License-Identifier: AGPL-3.0-or-later +*/.toastify.dialogs{min-width:200px;background:none;background-color:var(--color-main-background);color:var(--color-main-text);box-shadow:0 0 6px 0 var(--color-box-shadow);padding:0 12px;margin-top:45px;position:fixed;z-index:10100;border-radius:var(--border-radius);display:flex;align-items:center;min-height:50px}.toastify.dialogs .toast-loader-container,.toastify.dialogs .toast-undo-container{display:flex;align-items:center;width:100%}.toastify.dialogs .toast-undo-button,.toastify.dialogs .toast-close{position:static;overflow:hidden;box-sizing:border-box;min-width:44px;height:100%;padding:12px;white-space:nowrap;background-repeat:no-repeat;background-position:center;background-color:transparent;min-height:0}.toastify.dialogs .toast-undo-button.toast-close,.toastify.dialogs .toast-close.toast-close{text-indent:0;opacity:.4;border:none;min-height:44px;margin-left:10px;font-size:0}.toastify.dialogs .toast-undo-button.toast-close:before,.toastify.dialogs .toast-close.toast-close:before{background-image:url("data:image/svg+xml,%3csvg%20viewBox='0%200%2016%2016'%20height='16'%20width='16'%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2'%3e%3cpath%20d='M6.4%2019%205%2017.6l5.6-5.6L5%206.4%206.4%205l5.6%205.6L17.6%205%2019%206.4%2013.4%2012l5.6%205.6-1.4%201.4-5.6-5.6L6.4%2019Z'%20style='fill-rule:nonzero'%20transform='matrix(.85714%200%200%20.85714%20-2.286%20-2.286)'/%3e%3c/svg%3e");content:" ";filter:var(--background-invert-if-dark);display:inline-block;width:16px;height:16px}.toastify.dialogs .toast-undo-button.toast-undo-button,.toastify.dialogs .toast-close.toast-undo-button{height:calc(100% - 6px);margin:3px 3px 3px 12px}.toastify.dialogs .toast-undo-button:hover,.toastify.dialogs .toast-undo-button:focus,.toastify.dialogs .toast-undo-button:active,.toastify.dialogs .toast-close:hover,.toastify.dialogs .toast-close:focus,.toastify.dialogs .toast-close:active{cursor:pointer;opacity:1}.toastify.dialogs.toastify-top{right:10px}.toastify.dialogs.toast-with-click{cursor:pointer}.toastify.dialogs.toast-error{border-left:3px solid var(--color-element-error, var(--color-error))}.toastify.dialogs.toast-info{border-left:3px solid var(--color-element-info, var(--color-primary))}.toastify.dialogs.toast-warning{border-left:3px solid var(--color-element-warning, var(--color-warning))}.toastify.dialogs.toast-success,.toastify.dialogs.toast-undo{border-left:3px solid var(--color-element-success, var(--color-success))}.toastify.dialogs.toast-loading{border-left:3px solid var(--color-element-info, var(--color-primary))}.toastify.dialogs.toast-loading .toast-loader{display:inline-block;width:20px;height:20px;animation:rotate var(--animation-duration, .8s) linear infinite;margin-left:auto}.theme--dark .toastify.dialogs .toast-close.toast-close:before{background-image:url("data:image/svg+xml,%3csvg%20viewBox='0%200%2016%2016'%20height='16'%20width='16'%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2'%3e%3cpath%20d='M6.4%2019%205%2017.6l5.6-5.6L5%206.4%206.4%205l5.6%205.6L17.6%205%2019%206.4%2013.4%2012l5.6%205.6-1.4%201.4-5.6-5.6L6.4%2019Z'%20style='fill:%23fff;fill-rule:nonzero'%20transform='matrix(.85714%200%200%20.85714%20-2.286%20-2.286)'/%3e%3c/svg%3e")}.nc-generic-dialog .dialog__actions{justify-content:space-between;min-width:calc(100% - 12px)}._pickerEntry_xk2pl_1:not(:last-of-type){border-bottom:1px solid var(--color-border)}._pickerEntryItem_xk2pl_5{display:flex;align-items:center;height:64px}._pickerEntryIcon_xk2pl_11,._pickerEntryPreview_xk2pl_12{height:64px;width:64px;margin:0 var(--secondary-margin);display:block;flex:0 0 64px}._pickerEntryIcon_xk2pl_11{color:var(--color-text-maxcontrast)}._pickerEntryIcon_folder_xk2pl_24{color:var(--color-primary-element)}._pickerEntryPreview_xk2pl_12{overflow:hidden;border-radius:calc(var(--border-radius) * 2);object-fit:cover}._pickerEntryDescription_xk2pl_34{display:flex;flex-direction:column}._pickerEntryDescription_xk2pl_34 span{white-space:nowrap}._picker_6q4ek_1{--margin: 36px;--secondary-margin: 18px}._pickerHeader_6q4ek_6{position:sticky;z-index:10;top:0;padding:0 var(--margin);padding-bottom:var(--secondary-margin);background-color:var(--color-main-background)}._pickerForm_6q4ek_15{position:relative;overflow:auto;padding:0 var(--margin);margin-top:calc(-1 * var(--secondary-margin))}._pickerActionSubmit_disabled_6q4ek_22{opacity:.7;filter:saturate(50%)}._pickerSelectAll_6q4ek_27{display:grid;width:100%;margin-top:calc(var(--secondary-margin) * 1.5);padding-bottom:var(--secondary-margin);grid-template-columns:1fr 1fr}._pickerSelectAll_6q4ek_27 legend{display:flex;align-items:center;width:100%;margin-bottom:calc(var(--secondary-margin) / 2)}._pickerSelectAll_6q4ek_27._conflict-picker__all_6q4ek_40{position:sticky;top:0;margin:0;padding:var(--secondary-margin) 0;background-image:linear-gradient(to top,transparent,var(--color-main-background-blur) 10%,var(--color-main-background) 15%)}._pickerSelectAll_6q4ek_27._conflict-picker__all_6q4ek_40+fieldset{margin-top:0}._pickerSelectAll_6q4ek_27._conflict-picker__all_6q4ek_40 :deep(label){font-weight:700}._file-picker__file-icon_3v9zx_9{position:relative;width:32px;height:32px;min-width:32px;min-height:32px;background-repeat:no-repeat;background-size:contain;display:flex;justify-content:center}._file-picker__file-icon--primary_3v9zx_21{color:var(--color-primary-element)}._file-picker__file-icon-overlay_3v9zx_25{color:var(--color-primary-element-text);position:absolute;inset-block-start:10px}tr.file-picker__row[data-v-bfa2ae80]{height:var(--row-height, 50px)}tr.file-picker__row td[data-v-bfa2ae80]{cursor:pointer;overflow:hidden;text-overflow:ellipsis;border-bottom:none}tr.file-picker__row td.row-checkbox[data-v-bfa2ae80]{padding:0 2px}tr.file-picker__row td[data-v-bfa2ae80]:not(.row-checkbox){padding-inline:14px 0}tr.file-picker__row td.row-size[data-v-bfa2ae80]{text-align:end;padding-inline:0 14px}tr.file-picker__row td.row-name[data-v-bfa2ae80]{padding-inline:2px 0}.file-picker__row--selected[data-v-bfa2ae80]{background-color:var(--color-background-dark)}.file-picker__row[data-v-bfa2ae80]:hover{background-color:var(--color-background-hover)}.file-picker__name-container[data-v-bfa2ae80]{display:flex;justify-content:start;align-items:center;height:100%}.file-picker__file-name[data-v-bfa2ae80]{padding-inline-start:6px;min-width:0;overflow:hidden;text-overflow:ellipsis}.file-picker__file-extension[data-v-bfa2ae80]{color:var(--color-text-maxcontrast);min-width:fit-content}/*! +* SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors +* SPDX-License-Identifier: AGPL-3.0-or-later +*/tr.file-picker__row[data-v-1f96131b]{height:var(--row-height, 50px)}tr.file-picker__row td[data-v-1f96131b]{cursor:pointer;overflow:hidden;text-overflow:ellipsis;border-bottom:none}tr.file-picker__row td.row-checkbox[data-v-1f96131b]{padding:0 2px}tr.file-picker__row td[data-v-1f96131b]:not(.row-checkbox){padding-inline:14px 0}tr.file-picker__row td.row-size[data-v-1f96131b]{text-align:end;padding-inline:0 14px}tr.file-picker__row td.row-name[data-v-1f96131b]{padding-inline:2px 0}@keyframes gradient-1f96131b{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.loading-row .row-checkbox[data-v-1f96131b]{text-align:center!important}.loading-row span[data-v-1f96131b]{display:inline-block;height:24px;background:linear-gradient(to right,var(--color-background-darker),var(--color-text-maxcontrast),var(--color-background-darker));background-size:600px 100%;border-radius:var(--border-radius);animation:gradient-1f96131b 12s ease infinite}.loading-row .row-wrapper[data-v-1f96131b]{display:inline-flex;align-items:center}.loading-row .row-checkbox span[data-v-1f96131b]{width:24px}.loading-row .row-name span[data-v-1f96131b]:last-of-type{margin-inline-start:6px;width:130px}.loading-row .row-size span[data-v-1f96131b]{width:80px}.loading-row .row-modified span[data-v-1f96131b]{width:90px}.file-picker__header-preview[data-v-149cddc3]{width:22px;height:32px;flex:0 0 auto}.file-picker__files[data-v-149cddc3]{margin:2px;margin-inline-start:12px;overflow:scroll auto}.file-picker__files table[data-v-149cddc3]{width:100%;max-height:100%;table-layout:fixed}.file-picker__files th[data-v-149cddc3]{position:sticky;z-index:1;top:0;background-color:var(--color-main-background);padding:2px}.file-picker__files th .header-wrapper[data-v-149cddc3]{display:flex}.file-picker__files th.row-checkbox[data-v-149cddc3]{width:44px}.file-picker__files th.row-name[data-v-149cddc3]{width:230px}.file-picker__files th.row-size[data-v-149cddc3]{width:100px}.file-picker__files th.row-modified[data-v-149cddc3]{width:120px}.file-picker__files th[data-v-149cddc3]:not(.row-size) .button-vue__wrapper{justify-content:start;flex-direction:row-reverse}.file-picker__files th[data-v-149cddc3]:not(.row-size) .button-vue{padding-inline:16px 4px}.file-picker__files th.row-size[data-v-149cddc3] .button-vue__wrapper{justify-content:end}.file-picker__files th[data-v-149cddc3] .button-vue__wrapper{color:var(--color-text-maxcontrast)}.file-picker__files th[data-v-149cddc3] .button-vue__wrapper .button-vue__text{font-weight:400}.file-picker__breadcrumbs[data-v-4e6fd4e4]{flex-grow:0!important}.file-picker__side[data-v-86223490]{display:flex;flex-direction:column;align-items:stretch;gap:.5rem;min-width:200px;padding:2px;margin-block-start:7px;overflow:auto}.file-picker__side[data-v-86223490] .button-vue__wrapper{justify-content:start}.file-picker__filter-input[data-v-86223490]{margin-block:7px;max-width:260px}@media (max-width: 736px){.file-picker__side[data-v-86223490]{flex-direction:row;min-width:unset}}@media (max-width: 512px){.file-picker__side[data-v-86223490]{flex-direction:row;min-width:unset}.file-picker__filter-input[data-v-86223490]{max-width:unset}}.file-picker__navigation{padding-inline:8px 2px}.file-picker__navigation,.file-picker__navigation *{box-sizing:border-box}.file-picker__navigation .v-select.select{min-width:220px}@media (min-width: 513px) and (max-width: 736px){.file-picker__navigation{gap:11px}}@media (max-width: 512px){.file-picker__navigation{flex-direction:column-reverse!important}}.file-picker__view[data-v-ce116f72]{height:50px;display:flex;justify-content:start;align-items:center}.file-picker__view h3[data-v-ce116f72]{font-weight:700;height:fit-content;margin:0}.file-picker__main[data-v-ce116f72]{box-sizing:border-box;width:100%;display:flex;flex-direction:column;min-height:0;flex:1;padding-inline:2px}.file-picker__main[data-v-ce116f72] *{box-sizing:border-box}[data-v-ce116f72] .file-picker{height:min(80vh,800px)!important}@media (max-width: 512px){[data-v-ce116f72] .file-picker{height:calc(100% - 16px - var(--default-clickable-area))!important}}[data-v-ce116f72] .file-picker__content{display:flex;flex-direction:column;overflow:hidden}.public-auth-prompt__text[data-v-b33d88e5]{font-size:1.25em;margin-block:0 calc(3 * var(--default-grid-baseline))}.public-auth-prompt__header[data-v-b33d88e5]{margin-block:0 calc(3 * var(--default-grid-baseline))}.public-auth-prompt__header[data-v-b33d88e5]:first-child{margin-top:0}.public-auth-prompt__input[data-v-b33d88e5]{margin-block:calc(4 * var(--default-grid-baseline)) calc(2 * var(--default-grid-baseline))}legend[data-v-5adc73ce]{font-weight:700}.logreader-container[data-v-5adc73ce]{display:flex;flex-direction:column;height:100%}.logreader-container .info-note[data-v-5adc73ce]{margin-block:4px;margin-inline:1rem}.logreader-container .info-note__content[data-v-5adc73ce]{display:flex;gap:12px;align-items:center;justify-content:space-between}.logreader-container__header[data-v-5adc73ce]{padding-inline-start:1rem;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.logreader-container__header h2[data-v-5adc73ce]{margin:0;padding:0}.logreader-container__header .settings-toggle[data-v-5adc73ce]{margin:2px}[data-v-5adc73ce] .empty-content{text-align:center}@media only screen and (max-width: 1023px){.logreader-container__header[data-v-5adc73ce]{padding-inline-start:48px}} diff --git a/js/NcDateTimePicker-CW1gVRKL.chunk.mjs b/js/NcDateTimePicker-CTU6-OE5.chunk.mjs similarity index 99% rename from js/NcDateTimePicker-CW1gVRKL.chunk.mjs rename to js/NcDateTimePicker-CTU6-OE5.chunk.mjs index 482baee9..c6ee1447 100644 --- a/js/NcDateTimePicker-CW1gVRKL.chunk.mjs +++ b/js/NcDateTimePicker-CTU6-OE5.chunk.mjs @@ -1,5 +1,5 @@ /*! third party licenses: js/vendor.LICENSE.txt */ -import{n as $0,t as k,u as Xt,G as te,r as Et,p as Ne,q as de,N as Oe,l as mt,s as he,v as Ye,w as me,x as fe,y as Me,z as Ze,A as pe,S as Be}from"./logreader-main.mjs";import ge from"./NcSelect--Dtr1_4N.chunk.mjs";import"./colors-BMiIMYXK-Dwr2Mei3.chunk.mjs";function ee(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function K0(e){return ee(e)?new Date(e.getTime()):e==null?new Date(NaN):new Date(e)}function ye(e){return ee(e)&&!isNaN(e.getTime())}function re(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(t>=0&&t<=6))throw new RangeError("weekStartsOn must be between 0 and 6");var r=K0(e),T=r.getDay(),i=(T+7-t)%7;return r.setDate(r.getDate()-i),r.setHours(0,0,0,0),r}function Te(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.firstDayOfWeek,T=r===void 0?0:r,i=t.firstWeekContainsDate,a=i===void 0?1:i;if(!(a>=1&&a<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7");for(var n=K0(e),s=n.getFullYear(),A=new Date(0),o=s+1;o>=s-1&&(A.setFullYear(o,0,a),A.setHours(0,0,0,0),A=re(A,T),!(n.getTime()>=A.getTime()));o--);return A}function Ft(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.firstDayOfWeek,T=r===void 0?0:r,i=t.firstWeekContainsDate,a=i===void 0?1:i,n=K0(e),s=re(n,T),A=Te(n,{firstDayOfWeek:T,firstWeekContainsDate:a}),o=s.getTime()-A.getTime();return Math.round(o/(7*24*3600*1e3))+1}var ie={months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],weekdaysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],firstDayOfWeek:0,firstWeekContainsDate:1},Ie=/\[([^\]]+)]|YYYY|YY?|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|Z{1,2}|S{1,3}|w{1,2}|x|X|a|A/g;function v(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,r="".concat(Math.abs(e)),T=e<0?"-":"";r.length1&&arguments[1]!==void 0?arguments[1]:"",r=e>0?"-":"+",T=Math.abs(e),i=Math.floor(T/60),a=T%60;return r+v(i,2)+t+v(a,2)}var Zt=function(e,t,r){var T=e<12?"AM":"PM";return r?T.toLocaleLowerCase():T},f0={Y:function(e){var t=e.getFullYear();return t<=9999?"".concat(t):"+".concat(t)},YY:function(e){return v(e.getFullYear(),4).substr(2)},YYYY:function(e){return v(e.getFullYear(),4)},M:function(e){return e.getMonth()+1},MM:function(e){return v(e.getMonth()+1,2)},MMM:function(e,t){return t.monthsShort[e.getMonth()]},MMMM:function(e,t){return t.months[e.getMonth()]},D:function(e){return e.getDate()},DD:function(e){return v(e.getDate(),2)},H:function(e){return e.getHours()},HH:function(e){return v(e.getHours(),2)},h:function(e){var t=e.getHours();return t===0?12:t>12?t%12:t},hh:function(){var e=f0.h.apply(f0,arguments);return v(e,2)},m:function(e){return e.getMinutes()},mm:function(e){return v(e.getMinutes(),2)},s:function(e){return e.getSeconds()},ss:function(e){return v(e.getSeconds(),2)},S:function(e){return Math.floor(e.getMilliseconds()/100)},SS:function(e){return v(Math.floor(e.getMilliseconds()/10),2)},SSS:function(e){return v(e.getMilliseconds(),3)},d:function(e){return e.getDay()},dd:function(e,t){return t.weekdaysMin[e.getDay()]},ddd:function(e,t){return t.weekdaysShort[e.getDay()]},dddd:function(e,t){return t.weekdays[e.getDay()]},A:function(e,t){var r=t.meridiem||Zt;return r(e.getHours(),e.getMinutes(),!1)},a:function(e,t){var r=t.meridiem||Zt;return r(e.getHours(),e.getMinutes(),!0)},Z:function(e){return Mt(ft(e),":")},ZZ:function(e){return Mt(ft(e))},X:function(e){return Math.floor(e.getTime()/1e3)},x:function(e){return e.getTime()},w:function(e,t){return Ft(e,{firstDayOfWeek:t.firstDayOfWeek,firstWeekContainsDate:t.firstWeekContainsDate})},ww:function(e,t){return v(f0.w(e,t),2)}};function J0(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},T=t?String(t):"YYYY-MM-DDTHH:mm:ss.SSSZ",i=K0(e);if(!ye(i))return"Invalid Date";var a=r.locale||ie;return T.replace(Ie,function(n,s){return s||(typeof f0[n]=="function"?"".concat(f0[n](i,a)):n)})}function pt(e){return He(e)||Ge(e)||Le()}function Le(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function Ge(e){if(Symbol.iterator in Object(e)||Object.prototype.toString.call(e)==="[object Arguments]")return Array.from(e)}function He(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t68?r-1:r)*100+T,e0({},Tt,T)}),h("YYYY",xe,Tt),h("M",c0,function(e){return e0({},U0,parseInt(e,10)-1)}),h("MM",t0,function(e){return e0({},U0,parseInt(e,10)-1)}),h("MMM",M0("monthsShort"),Z0("monthsShort",U0)),h("MMMM",M0("months"),Z0("months",U0)),h("D",c0,gt),h("DD",t0,gt),h(["H","h"],c0,yt),h(["HH","hh"],t0,yt),h("m",c0,It),h("mm",t0,It),h("s",c0,Lt),h("ss",t0,Lt),h("S",ae,function(e){return e0({},it,parseInt(e,10)*100)}),h("SS",t0,function(e){return e0({},it,parseInt(e,10)*10)}),h("SSS",ke,it);function Ve(e){return e.meridiemParse||/[ap]\.?m?\.?/i}function je(e){return"".concat(e).toLowerCase().charAt(0)==="p"}h(["A","a"],Ve,function(e,t){var r=typeof t.isPM=="function"?t.isPM(e):je(e);return{isPM:r}});function We(e){var t=e.match(/([+-]|\d\d)/g)||["-","0","0"],r=ve(t,3),T=r[0],i=r[1],a=r[2],n=parseInt(i,10)*60+parseInt(a,10);return n===0?0:T==="+"?-n:+n}h(["Z","ZZ"],Pe,function(e){return{offset:We(e)}}),h("x",ne,function(e){return{date:new Date(parseInt(e,10))}}),h("X",Qe,function(e){return{date:new Date(parseFloat(e)*1e3)}}),h("d",ae,"weekday"),h("dd",M0("weekdaysMin"),Z0("weekdaysMin","weekday")),h("ddd",M0("weekdaysShort"),Z0("weekdaysShort","weekday")),h("dddd",M0("weekdays"),Z0("weekdays","weekday")),h("w",c0,"week"),h("ww",t0,"week");function $e(e,t){if(e!==void 0&&t!==void 0){if(t){if(e<12)return e+12}else if(e===12)return 0}return e}function Ke(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new Date,r=[0,0,1,0,0,0,0],T=[t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()],i=!0,a=0;a<7;a++)e[a]===void 0?r[a]=i?T[a]:r[a]:(r[a]=e[a],i=!1);return r}function Je(e,t,r,T,i,a,n){var s;return e<100&&e>=0?(s=new Date(e+400,t,r,T,i,a,n),isFinite(s.getFullYear())&&s.setFullYear(e)):s=new Date(e,t,r,T,i,a,n),s}function qe(){for(var e,t=arguments.length,r=new Array(t),T=0;T=0?(r[0]+=400,e=new Date(Date.UTC.apply(Date,r)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(i)):e=new Date(Date.UTC.apply(Date,r)),e}function Xe(e,t,r){var T=t.match(we);if(!T)throw new Error;for(var i=T.length,a={},n=0;n2&&arguments[2]!==void 0?arguments[2]:{};try{var T=r.locale,i=T===void 0?ie:T,a=r.backupDate,n=a===void 0?new Date:a,s=Xe(e,t,i),A=s.year,o=s.month,l=s.day,D=s.hour,S=s.minute,c=s.second,R=s.millisecond,u=s.isPM,F=s.date,M=s.offset,S0=s.weekday,$=s.week;if(F)return F;var et=[A,o,l,D,S,c,R];if(et[3]=$e(et[3],u),$!==void 0&&o===void 0&&l===void 0){var Fe=Te(A===void 0?n:new Date(A,3),{firstDayOfWeek:i.firstDayOfWeek,firstWeekContainsDate:i.firstWeekContainsDate});return new Date(Fe.getTime()+($-1)*7*24*3600*1e3)}var H0,rt=Ke(et,n);return M!==void 0?(rt[6]+=M*60*1e3,H0=qe.apply(void 0,pt(rt))):H0=Je.apply(void 0,pt(rt)),S0!==void 0&&H0.getDay()!==S0?new Date(NaN):H0}catch{return new Date(NaN)}}function P0(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?P0=function(t){return typeof t}:P0=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},P0(e)}function A0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Dt(){return Dt=Object.assign||function(e){for(var t=1;t=0)&&(r[i]=e[i]);return r}function rr(e,t){if(e==null)return{};var r=er(e,t),T,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,T)&&(r[T]=e[T])}return r}function p0(e,t){return Tr(e)||ir(e,t)||ar(e,t)||nr()}function Tr(e){if(Array.isArray(e))return e}function ir(e,t){if(!(typeof Symbol>"u"||!(Symbol.iterator in Object(e)))){var r=[],T=!0,i=!1,a=void 0;try{for(var n=e[Symbol.iterator](),s;!(T=(s=n.next()).done)&&(r.push(s.value),!(t&&r.length===t));T=!0);}catch(A){i=!0,a=A}finally{try{!T&&n.return!=null&&n.return()}finally{if(i)throw a}}return r}}function ar(e,t){if(e){if(typeof e=="string")return Ht(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(r);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ht(e,t)}}function Ht(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,T=new Array(t);r1&&arguments[1]!==void 0?arguments[1]:0;if(!(t>=0&&t<=6))throw new RangeError("weekStartsOn must be between 0 and 6");var r=K0(e),T=r.getDay(),i=(T+7-t)%7;return r.setDate(r.getDate()-i),r.setHours(0,0,0,0),r}function Te(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.firstDayOfWeek,T=r===void 0?0:r,i=t.firstWeekContainsDate,a=i===void 0?1:i;if(!(a>=1&&a<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7");for(var n=K0(e),s=n.getFullYear(),A=new Date(0),o=s+1;o>=s-1&&(A.setFullYear(o,0,a),A.setHours(0,0,0,0),A=re(A,T),!(n.getTime()>=A.getTime()));o--);return A}function Ft(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.firstDayOfWeek,T=r===void 0?0:r,i=t.firstWeekContainsDate,a=i===void 0?1:i,n=K0(e),s=re(n,T),A=Te(n,{firstDayOfWeek:T,firstWeekContainsDate:a}),o=s.getTime()-A.getTime();return Math.round(o/(7*24*3600*1e3))+1}var ie={months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],weekdaysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],firstDayOfWeek:0,firstWeekContainsDate:1},Ie=/\[([^\]]+)]|YYYY|YY?|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|Z{1,2}|S{1,3}|w{1,2}|x|X|a|A/g;function v(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,r="".concat(Math.abs(e)),T=e<0?"-":"";r.length1&&arguments[1]!==void 0?arguments[1]:"",r=e>0?"-":"+",T=Math.abs(e),i=Math.floor(T/60),a=T%60;return r+v(i,2)+t+v(a,2)}var Zt=function(e,t,r){var T=e<12?"AM":"PM";return r?T.toLocaleLowerCase():T},f0={Y:function(e){var t=e.getFullYear();return t<=9999?"".concat(t):"+".concat(t)},YY:function(e){return v(e.getFullYear(),4).substr(2)},YYYY:function(e){return v(e.getFullYear(),4)},M:function(e){return e.getMonth()+1},MM:function(e){return v(e.getMonth()+1,2)},MMM:function(e,t){return t.monthsShort[e.getMonth()]},MMMM:function(e,t){return t.months[e.getMonth()]},D:function(e){return e.getDate()},DD:function(e){return v(e.getDate(),2)},H:function(e){return e.getHours()},HH:function(e){return v(e.getHours(),2)},h:function(e){var t=e.getHours();return t===0?12:t>12?t%12:t},hh:function(){var e=f0.h.apply(f0,arguments);return v(e,2)},m:function(e){return e.getMinutes()},mm:function(e){return v(e.getMinutes(),2)},s:function(e){return e.getSeconds()},ss:function(e){return v(e.getSeconds(),2)},S:function(e){return Math.floor(e.getMilliseconds()/100)},SS:function(e){return v(Math.floor(e.getMilliseconds()/10),2)},SSS:function(e){return v(e.getMilliseconds(),3)},d:function(e){return e.getDay()},dd:function(e,t){return t.weekdaysMin[e.getDay()]},ddd:function(e,t){return t.weekdaysShort[e.getDay()]},dddd:function(e,t){return t.weekdays[e.getDay()]},A:function(e,t){var r=t.meridiem||Zt;return r(e.getHours(),e.getMinutes(),!1)},a:function(e,t){var r=t.meridiem||Zt;return r(e.getHours(),e.getMinutes(),!0)},Z:function(e){return Mt(ft(e),":")},ZZ:function(e){return Mt(ft(e))},X:function(e){return Math.floor(e.getTime()/1e3)},x:function(e){return e.getTime()},w:function(e,t){return Ft(e,{firstDayOfWeek:t.firstDayOfWeek,firstWeekContainsDate:t.firstWeekContainsDate})},ww:function(e,t){return v(f0.w(e,t),2)}};function J0(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},T=t?String(t):"YYYY-MM-DDTHH:mm:ss.SSSZ",i=K0(e);if(!ye(i))return"Invalid Date";var a=r.locale||ie;return T.replace(Ie,function(n,s){return s||(typeof f0[n]=="function"?"".concat(f0[n](i,a)):n)})}function pt(e){return He(e)||Ge(e)||Le()}function Le(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function Ge(e){if(Symbol.iterator in Object(e)||Object.prototype.toString.call(e)==="[object Arguments]")return Array.from(e)}function He(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t68?r-1:r)*100+T,e0({},Tt,T)}),h("YYYY",xe,Tt),h("M",c0,function(e){return e0({},U0,parseInt(e,10)-1)}),h("MM",t0,function(e){return e0({},U0,parseInt(e,10)-1)}),h("MMM",M0("monthsShort"),Z0("monthsShort",U0)),h("MMMM",M0("months"),Z0("months",U0)),h("D",c0,gt),h("DD",t0,gt),h(["H","h"],c0,yt),h(["HH","hh"],t0,yt),h("m",c0,It),h("mm",t0,It),h("s",c0,Lt),h("ss",t0,Lt),h("S",ae,function(e){return e0({},it,parseInt(e,10)*100)}),h("SS",t0,function(e){return e0({},it,parseInt(e,10)*10)}),h("SSS",ke,it);function Ve(e){return e.meridiemParse||/[ap]\.?m?\.?/i}function je(e){return"".concat(e).toLowerCase().charAt(0)==="p"}h(["A","a"],Ve,function(e,t){var r=typeof t.isPM=="function"?t.isPM(e):je(e);return{isPM:r}});function We(e){var t=e.match(/([+-]|\d\d)/g)||["-","0","0"],r=ve(t,3),T=r[0],i=r[1],a=r[2],n=parseInt(i,10)*60+parseInt(a,10);return n===0?0:T==="+"?-n:+n}h(["Z","ZZ"],Pe,function(e){return{offset:We(e)}}),h("x",ne,function(e){return{date:new Date(parseInt(e,10))}}),h("X",Qe,function(e){return{date:new Date(parseFloat(e)*1e3)}}),h("d",ae,"weekday"),h("dd",M0("weekdaysMin"),Z0("weekdaysMin","weekday")),h("ddd",M0("weekdaysShort"),Z0("weekdaysShort","weekday")),h("dddd",M0("weekdays"),Z0("weekdays","weekday")),h("w",c0,"week"),h("ww",t0,"week");function $e(e,t){if(e!==void 0&&t!==void 0){if(t){if(e<12)return e+12}else if(e===12)return 0}return e}function Ke(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new Date,r=[0,0,1,0,0,0,0],T=[t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()],i=!0,a=0;a<7;a++)e[a]===void 0?r[a]=i?T[a]:r[a]:(r[a]=e[a],i=!1);return r}function Je(e,t,r,T,i,a,n){var s;return e<100&&e>=0?(s=new Date(e+400,t,r,T,i,a,n),isFinite(s.getFullYear())&&s.setFullYear(e)):s=new Date(e,t,r,T,i,a,n),s}function qe(){for(var e,t=arguments.length,r=new Array(t),T=0;T=0?(r[0]+=400,e=new Date(Date.UTC.apply(Date,r)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(i)):e=new Date(Date.UTC.apply(Date,r)),e}function Xe(e,t,r){var T=t.match(we);if(!T)throw new Error;for(var i=T.length,a={},n=0;n2&&arguments[2]!==void 0?arguments[2]:{};try{var T=r.locale,i=T===void 0?ie:T,a=r.backupDate,n=a===void 0?new Date:a,s=Xe(e,t,i),A=s.year,o=s.month,l=s.day,D=s.hour,S=s.minute,c=s.second,R=s.millisecond,u=s.isPM,F=s.date,M=s.offset,S0=s.weekday,$=s.week;if(F)return F;var et=[A,o,l,D,S,c,R];if(et[3]=$e(et[3],u),$!==void 0&&o===void 0&&l===void 0){var Fe=Te(A===void 0?n:new Date(A,3),{firstDayOfWeek:i.firstDayOfWeek,firstWeekContainsDate:i.firstWeekContainsDate});return new Date(Fe.getTime()+($-1)*7*24*3600*1e3)}var H0,rt=Ke(et,n);return M!==void 0?(rt[6]+=M*60*1e3,H0=qe.apply(void 0,pt(rt))):H0=Je.apply(void 0,pt(rt)),S0!==void 0&&H0.getDay()!==S0?new Date(NaN):H0}catch{return new Date(NaN)}}function P0(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?P0=function(t){return typeof t}:P0=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},P0(e)}function A0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Dt(){return Dt=Object.assign||function(e){for(var t=1;t=0)&&(r[i]=e[i]);return r}function rr(e,t){if(e==null)return{};var r=er(e,t),T,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,T)&&(r[T]=e[T])}return r}function p0(e,t){return Tr(e)||ir(e,t)||ar(e,t)||nr()}function Tr(e){if(Array.isArray(e))return e}function ir(e,t){if(!(typeof Symbol>"u"||!(Symbol.iterator in Object(e)))){var r=[],T=!0,i=!1,a=void 0;try{for(var n=e[Symbol.iterator](),s;!(T=(s=n.next()).done)&&(r.push(s.value),!(t&&r.length===t));T=!0);}catch(A){i=!0,a=A}finally{try{!T&&n.return!=null&&n.return()}finally{if(i)throw a}}return r}}function ar(e,t){if(e){if(typeof e=="string")return Ht(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(r);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ht(e,t)}}function Ht(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,T=new Array(t);r1&&arguments[1]!==void 0?arguments[1]:0,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,T=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,n=arguments.length>6&&arguments[6]!==void 0?arguments[6]:0,s=new Date(e,t,r,T,i,a,n);return e<100&&e>=0&&s.setFullYear(e),s}function W(e){return e instanceof Date&&!isNaN(e)}function q0(e){return Array.isArray(e)&&e.length===2&&e.every(W)&&e[0]<=e[1]}function Dr(e){return Array.isArray(e)&&e.every(W)}function N0(e){var t=new Date(e);if(W(t))return t;for(var r=arguments.length,T=new Array(r>1?r-1:0),i=1;i1&&arguments[1]!==void 0?arguments[1]:document.body;if(!e||e===t)return null;var r=function(a,n){return getComputedStyle(a,null).getPropertyValue(n)},T=/(auto|scroll)/,i=T.test(r(e,"overflow")+r(e,"overflow-y")+r(e,"overflow-x"));return i?e:X0(e.parentNode,t)}var fr={name:"Popup",inject:{prefixClass:{default:"mx"}},props:{visible:{type:Boolean,default:!1},appendToBody:{type:Boolean,default:!0}},data:function(){return{top:"",left:""}},watch:{visible:{immediate:!0,handler:function(e){var t=this;this.$nextTick(function(){e&&t.displayPopup()})}}},mounted:function(){var e=this;this.appendToBody&&document.body.appendChild(this.$el),this._clickoutEvent="ontouchend"in document?"touchstart":"mousedown",document.addEventListener(this._clickoutEvent,this.handleClickOutside);var t=this.$parent.$el;this._displayPopup=hr(function(){return e.displayPopup()}),this._scrollParent=X0(t)||window,this._scrollParent.addEventListener("scroll",this._displayPopup),window.addEventListener("resize",this._displayPopup)},beforeDestroy:function(){this.appendToBody&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el),document.removeEventListener(this._clickoutEvent,this.handleClickOutside),this._scrollParent.removeEventListener("scroll",this._displayPopup),window.removeEventListener("resize",this._displayPopup)},methods:{handleClickOutside:function(e){if(this.visible){var t=e.target,r=this.$el;r&&!r.contains(t)&&this.$emit("clickoutside",e)}},displayPopup:function(){if(this.visible){var e=this.$el,t=this.$parent.$el,r=this.appendToBody;this._popupRect||(this._popupRect=Yr(e));var T=this._popupRect,i=T.width,a=T.height,n=mr(t,i,a,r),s=n.left,A=n.top;this.left=s,this.top=A}}}};function _(e,t,r,T,i,a,n,s,A,o){var l=typeof r=="function"?r.options:r;return e&&e.render&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns,l._compiled=!0),r}var Mr=fr,Zr=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("transition",{attrs:{name:e.prefixClass+"-zoom-in-down"}},[e.visible?r("div",{class:e.prefixClass+"-datepicker-main "+e.prefixClass+"-datepicker-popup",style:{top:e.top,left:e.left,position:"absolute"}},[e._t("default")],2):e._e()])},pr=[],Br=void 0,gr=_({render:Zr,staticRenderFns:pr},Br,Mr),yr=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024",width:"1em",height:"1em"}},[r("path",{attrs:{d:"M940.218182 107.054545h-209.454546V46.545455h-65.163636v60.50909H363.054545V46.545455H297.890909v60.50909H83.781818c-18.618182 0-32.581818 13.963636-32.581818 32.581819v805.236363c0 18.618182 13.963636 32.581818 32.581818 32.581818h861.090909c18.618182 0 32.581818-13.963636 32.581818-32.581818V139.636364c-4.654545-18.618182-18.618182-32.581818-37.236363-32.581819zM297.890909 172.218182V232.727273h65.163636V172.218182h307.2V232.727273h65.163637V172.218182h176.872727v204.8H116.363636V172.218182h181.527273zM116.363636 912.290909V442.181818h795.927273v470.109091H116.363636z"}})])},Ir=[],Lr=void 0,Gr=_({render:yr,staticRenderFns:Ir},Lr,{}),Hr=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"1em",height:"1em"}},[r("path",{attrs:{d:"M0 0h24v24H0z",fill:"none"}}),e._v(" "),r("path",{attrs:{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}}),e._v(" "),r("path",{attrs:{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"}})])},Ur=[],vr=void 0,Cr=_({render:Hr,staticRenderFns:Ur},vr,{}),br=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024",width:"1em",height:"1em"}},[r("path",{attrs:{d:"M810.005333 274.005333l-237.994667 237.994667 237.994667 237.994667-60.010667 60.010667-237.994667-237.994667-237.994667 237.994667-60.010667-60.010667 237.994667-237.994667-237.994667-237.994667 60.010667-60.010667 237.994667 237.994667 237.994667-237.994667z"}})])},_r=[],wr=void 0,kr=_({render:br,staticRenderFns:_r},wr,{}),xr={props:{type:String,disabled:Boolean},inject:{prefixClass:{default:"mx"}}},Pr=xr,Qr=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("button",e._g({class:[e.prefixClass+"-btn "+e.prefixClass+"-btn-text "+e.prefixClass+"-btn-icon-"+e.type,{disabled:e.disabled}],attrs:{type:"button",disabled:e.disabled}},e.$listeners),[r("i",{class:e.prefixClass+"-icon-"+e.type})])},zr=[],Vr=void 0,dt=_({render:Qr,staticRenderFns:zr},Vr,Pr),jr={name:"TableDate",components:{IconButton:dt},inject:{getLocale:{default:function(){return h0}},getWeek:{default:function(){return Ft}},prefixClass:{default:"mx"},onDateMouseEnter:{default:void 0},onDateMouseLeave:{default:void 0}},props:{disabledCalendarChanger:{type:Function,default:function(){return!1}},calendar:{type:Date,default:function(){return new Date}},showWeekNumber:{type:Boolean,default:!1},titleFormat:{type:String,default:"YYYY-MM-DD"},getRowClasses:{type:Function,default:function(){return[]}},getCellClasses:{type:Function,default:function(){return[]}}},computed:{firstDayOfWeek:function(){return this.getLocale().formatLocale.firstDayOfWeek||0},yearMonth:function(){var e=this.getLocale(),t=e.yearFormat,r=e.monthBeforeYear,T=e.monthFormat,i=T===void 0?"MMM":T,a={panel:"year",label:this.formatDate(this.calendar,t)},n={panel:"month",label:this.formatDate(this.calendar,i)};return r?[n,a]:[a,n]},days:function(){var e=this.getLocale(),t=e.days||e.formatLocale.weekdaysMin;return t.concat(t).slice(this.firstDayOfWeek,this.firstDayOfWeek+7)},dates:function(){var e=this.calendar.getFullYear(),t=this.calendar.getMonth(),r=cr({firstDayOfWeek:this.firstDayOfWeek,year:e,month:t});return Nt(r,7)}},methods:{isDisabledArrows:function(e){var t=new Date(this.calendar);switch(e){case"last-year":t.setFullYear(t.getFullYear()-1,t.getMonth()+1,0),t.setHours(23,59,59,999);break;case"next-year":t.setFullYear(t.getFullYear()+1);break;case"last-month":t.setMonth(t.getMonth(),0),t.setHours(23,59,59,999);break;case"next-month":t.setMonth(t.getMonth()+1);break}return this.disabledCalendarChanger(t,e)},handleIconLeftClick:function(){this.$emit("changecalendar",ct(this.calendar,function(e){return e-1}),"last-month")},handleIconRightClick:function(){this.$emit("changecalendar",ct(this.calendar,function(e){return e+1}),"next-month")},handleIconDoubleLeftClick:function(){this.$emit("changecalendar",d0(this.calendar,function(e){return e-1}),"last-year")},handleIconDoubleRightClick:function(){this.$emit("changecalendar",d0(this.calendar,function(e){return e+1}),"next-year")},handlePanelChange:function(e){this.$emit("changepanel",e)},handleMouseEnter:function(e){typeof this.onDateMouseEnter=="function"&&this.onDateMouseEnter(e)},handleMouseLeave:function(e){typeof this.onDateMouseLeave=="function"&&this.onDateMouseLeave(e)},handleCellClick:function(e){var t=e.target;t.tagName.toUpperCase()==="DIV"&&(t=t.parentNode);var r=t.getAttribute("data-row-col");if(r){var T=r.split(",").map(function(A){return parseInt(A,10)}),i=p0(T,2),a=i[0],n=i[1],s=this.dates[a][n];this.$emit("select",new Date(s))}},formatDate:function(e,t){return J0(e,t,{locale:this.getLocale().formatLocale})},getCellTitle:function(e){var t=this.titleFormat;return this.formatDate(e,t)},getWeekNumber:function(e){return this.getWeek(e,this.getLocale().formatLocale)}}},Wr=jr,$r=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{class:e.prefixClass+"-calendar "+e.prefixClass+"-calendar-panel-date"},[r("div",{class:e.prefixClass+"-calendar-header"},[r("icon-button",{attrs:{type:"double-left",disabled:e.isDisabledArrows("last-year")},on:{click:e.handleIconDoubleLeftClick}}),e._v(" "),r("icon-button",{attrs:{type:"left",disabled:e.isDisabledArrows("last-month")},on:{click:e.handleIconLeftClick}}),e._v(" "),r("icon-button",{attrs:{type:"double-right",disabled:e.isDisabledArrows("next-year")},on:{click:e.handleIconDoubleRightClick}}),e._v(" "),r("icon-button",{attrs:{type:"right",disabled:e.isDisabledArrows("next-month")},on:{click:e.handleIconRightClick}}),e._v(" "),r("span",{class:e.prefixClass+"-calendar-header-label"},e._l(e.yearMonth,function(T){return r("button",{key:T.panel,class:e.prefixClass+"-btn "+e.prefixClass+"-btn-text "+e.prefixClass+"-btn-current-"+T.panel,attrs:{type:"button"},on:{click:function(i){return e.handlePanelChange(T.panel)}}},[e._v(` `+e._s(T.label)+` `)])}),0)],1),e._v(" "),r("div",{class:e.prefixClass+"-calendar-content"},[r("table",{class:e.prefixClass+"-table "+e.prefixClass+"-table-date"},[r("thead",[r("tr",[e.showWeekNumber?r("th",{class:e.prefixClass+"-week-number-header"}):e._e(),e._v(" "),e._l(e.days,function(T){return r("th",{key:T},[e._v(e._s(T))])})],2)]),e._v(" "),r("tbody",{on:{click:e.handleCellClick}},e._l(e.dates,function(T,i){return r("tr",{key:i,class:[e.prefixClass+"-date-row",e.getRowClasses(T)]},[e.showWeekNumber?r("td",{class:e.prefixClass+"-week-number",attrs:{"data-row-col":i+",0"}},[e._v(` @@ -3873,4 +3873,4 @@ TZNAME:SST\r DTSTART:19700101T000000\r END:STANDARD`]}},Y0={version:Ei,aliases:Di,zones:ui};class Si{_aliases=new Map;_timezones=new Map;_pendingAliases=[];getTimezoneForId(t){let r=0;for(;r++<20;){if(this._timezones.has(t))return this._timezones.get(t);if(this._aliases.has(t))t=this._aliases.get(t);else return null}return console.error("TimezoneManager.getTimezoneForIdRec() exceeds recursion limits"),null}hasTimezoneForId(t){return this._timezones.has(t)||this._aliases.has(t)}isAlias(t){return!this._timezones.has(t)&&this._aliases.has(t)}listAllTimezones(t=!1){const r=Array.from(this._timezones.keys());return t?r.concat(Array.from(this._aliases.keys())):r}registerTimezone(t){this._timezones.set(t.timezoneId,t),Z.TimezoneService.register(t.toICALTimezone(),t.timezoneId),this._pendingAliases=this._pendingAliases.filter(([r,T])=>T!==t.timezoneId?!0:(Z.TimezoneService.register(t.toICALTimezone(),r),!1))}registerDefaultTimezones(){console.debug(`@nextcloud/calendar-js app is using version ${Y0.version} of the timezone database`);for(const t in Y0.zones){const r=["BEGIN:VTIMEZONE","TZID:"+t,...Y0.zones[t].ics,"END:VTIMEZONE"].join(`\r `);this.registerTimezoneFromICS(t,r)}for(const t in Y0.aliases)this.registerAlias(t,Y0.aliases[t].aliasTo)}registerTimezoneFromICS(t,r){const T=new T0(t,r);this.registerTimezone(T)}registerAlias(t,r){this._aliases.set(t,r);const T=this.getTimezoneForId(r);if(!T){this._pendingAliases.push([t,r]);return}Z.TimezoneService.register(T.toICALTimezone(),t)}unregisterTimezones(t){this._timezones.delete(t),Z.TimezoneService.remove(t)}unregisterAlias(t){this._aliases.delete(t),this._pendingAliases=this._pendingAliases.filter(([r])=>r!==t),Z.TimezoneService.remove(t)}clearAllTimezones(){this._aliases=new Map,this._pendingAliases=[],this._timezones=new Map,Z.TimezoneService.reset(),F0.registerTimezone(T0.utc),F0.registerTimezone(T0.floating),F0.registerAlias("GMT",T0.utc.timezoneId),F0.registerAlias("Z",T0.utc.timezoneId)}}const F0=new Si;F0.clearAllTimezones();function ci(){return F0}Et(Ne),Et(de);function Ri(e=[],t=[]){const r={},T=[];for(const i of e){const a=i.split("/");let[n,s]=[a.shift(),a.join("/")];s||(s=n,n=k("Global")),r[n]=r[n]||{continent:n,regions:[]},r[n].regions.push({label:Re(s),cities:[],timezoneId:i})}for(const i of t){const{continent:a,label:n,timezoneId:s}=i;r[a]=r[a]||{continent:a,regions:[]},r[a].regions.push({label:n,cities:[],timezoneId:s})}for(const i in r)Object.hasOwn(r,i)&&(r[i].regions.sort((a,n)=>a.labeli.continent[]},value:{type:String,default:void 0},modelValue:{type:String,default:"floating"},uid:{type:[String,Number],default:()=>"tz-".concat(te(5))}},emits:["input","update:modelValue","update:model-value"],setup(){return{model:Xt("value","input")}},computed:{placeholder(){return k("Type to search time zone")},selectedTimezone(){for(const e of this.additionalTimezones)if(e.timezoneId===this.model)return e;return{label:Re(this.model),timezoneId:this.model}},options(){const e=Fi(),t=Ri(e.listAllTimezones(),this.additionalTimezones);let r=[];return Object.values(t).forEach(T=>{r=r.concat(T.regions)}),r}},methods:{t:k,change(e){e&&(this.model=e.timezoneId)},isSelectable(e){return!e.timezoneId.startsWith("tz-group__")},filterBy(e,t,r){const T=r.trim().split(" ");return e.timezoneId.startsWith("tz-group__")?e.regions.some(i=>this.matchTimezoneId(i.timezoneId,T)):this.matchTimezoneId(e.timezoneId,T)},matchTimezoneId(e,t){return t.every(r=>e.toLowerCase().includes(r.toLowerCase()))}}};var di=function(){var e=this,t=e._self._c;return t("NcSelect",{attrs:{"aria-label-combobox":e.t("Search for time zone"),clearable:!1,"filter-by":e.filterBy,multiple:!1,options:e.options,placeholder:e.placeholder,selectable:e.isSelectable,uid:e.uid,value:e.selectedTimezone,label:"label"},on:{"option:selected":e.change}})},Oi=[],hi=$0(Ni,di,Oi,!1,null,null);const Yi=hi.exports;var mi=Object.defineProperty,$t=Object.getOwnPropertySymbols,fi=Object.prototype.hasOwnProperty,Mi=Object.prototype.propertyIsEnumerable,Kt=(e,t,r)=>t in e?mi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Jt=(e,t)=>{for(var r in t||(t={}))fi.call(t,r)&&Kt(e,r,t[r]);if($t)for(var r of $t(t))Mi.call(t,r)&&Kt(e,r,t[r]);return e};const Zi={name:"CalendarBlankIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var pi=function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon calendar-blank-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(r){return e.$emit("click",r)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])},Bi=[],gi=$0(Zi,pi,Bi,!1,null,null);const yi=gi.exports,Ii={name:"WebIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Li=function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon web-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(r){return e.$emit("click",r)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])},Gi=[],Hi=$0(Ii,Li,Gi,!1,null,null);const Ui=Hi.exports;Et(pe);const qt={date:"YYYY-MM-DD",datetime:"YYYY-MM-DD H:mm:ss",year:"YYYY",month:"YYYY-MM",time:"H:mm:ss",week:"w"},vi={name:"NcDateTimePicker",components:{CalendarBlank:yi,DatePicker:n0,NcPopover:Oe,NcTimezonePicker:Yi,Web:Ui},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{clearable:{type:Boolean,default:!1},minuteStep:{type:Number,default:10},type:{type:String,default:"date",validator:e=>["date","time","datetime","week","month","year","date-range","time-range","datetime-range"].includes(e)},format:{type:[String,Function],default:null},formatter:{type:Object,default:null},lang:{type:Object,default:null},value:{default:void 0},modelValue:{default:()=>new Date},timezoneId:{type:String,default:"UTC"},showTimezoneSelect:{type:Boolean,default:!1},highlightTimezone:{type:Boolean,default:!1},appendToBody:{type:Boolean,default:!1},showWeekNumber:{type:Boolean,default:!1},placeholder:{type:String,default:null},range:{type:Boolean,default:!1}},emits:["update:value","update:modelValue","update:model-value","update:timezone-id"],setup(){return{model:Xt("value","update:value"),timezoneDialogHeaderId:"timezone-dialog-header-".concat(te())}},data(){return{showTimezonePopover:!1,tzVal:this.timezoneId}},computed:{realType(){return this.type.split("-")[0]},defaultLang(){return{formatLocale:{months:Ze(),monthsShort:Me(),weekdays:fe(),weekdaysShort:me(),weekdaysMin:Ye(),firstDayOfWeek:he()},monthFormat:"MMMM"}},defaultPlaceholder(){return this.realType==="time"?k("Pick a time"):this.realType==="month"?k("Pick a month"):this.realType==="year"?k("Pick a year"):this.realType==="week"?k("Pick a week"):this.realType==="date"?k("Pick a date"):k("Pick a date and a time")},internalRange(){return this.range||this.type.endsWith("-range")},internalFormat(){return this.format&&typeof this.format=="string"?this.format:qt[this.realType]||qt.date},internalFormatter(){var e;return Jt(Jt({getWeek:t=>{const r=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()));r.setUTCDate(r.getUTCDate()+4-(r.getUTCDay()||7));const T=new Date(Date.UTC(r.getUTCFullYear(),0,1));return Math.ceil(((r-T)/864e5+1)/7)}},typeof this.format=="function"?{stringify:this.format}:{}),(e=this.formatter)!=null?e:{})}},methods:{t:k,handleSelectYear(e){const t=this.$refs.datepicker.currentValue;if(t)try{const r=new Date(new Date(t).setFullYear(e));this.$refs.datepicker.selectDate(r)}catch{mt.error("Invalid value",{value:t,year:e})}},handleSelectMonth(e){const t=this.$refs.datepicker.currentValue;if(t)try{const r=new Date(new Date(t).setMonth(e));this.$refs.datepicker.selectDate(r)}catch{mt.error("Invalid value",{value:t,month:e})}},toggleTimezonePopover(){this.showTimezoneSelect&&(this.showTimezonePopover=!this.showTimezonePopover)}}};var Ci=function(){var e=this,t=e._self._c;return t("DatePicker",e._g(e._b({ref:"datepicker",attrs:{"append-to-body":e.appendToBody,clearable:e.clearable,format:e.internalFormat,formatter:e.internalFormatter,lang:e.lang?e.lang:e.defaultLang,"minute-step":e.minuteStep,placeholder:e.placeholder?e.placeholder:e.defaultPlaceholder,"popup-class":{"show-week-number":e.showWeekNumber},range:e.internalRange,"show-week-number":e.showWeekNumber,type:e.realType,value:e.model},on:{"select-year":e.handleSelectYear,"select-month":e.handleSelectMonth,input:function(r){e.model=r}},scopedSlots:e._u([{key:"icon-calendar",fn:function(){return[e.showTimezoneSelect?t("NcPopover",{attrs:{"popup-role":"dialog",shown:e.showTimezonePopover,"popover-base-class":"timezone-select__popper"},on:{"update:shown":function(r){e.showTimezonePopover=r}},scopedSlots:e._u([{key:"trigger",fn:function({attrs:r}){return[t("button",e._b({staticClass:"datetime-picker-inline-icon",class:{"datetime-picker-inline-icon--highlighted":e.highlightTimezone},on:{mousedown:function(T){return T.stopPropagation(),T.preventDefault(),(()=>{}).apply(null,arguments)}}},"button",r,!1),[t("Web",{attrs:{size:20}})],1)]}}],null,!1,3026992387)},[t("div",{attrs:{role:"dialog","aria-labelledby":e.timezoneDialogHeaderId}},[t("div",{staticClass:"timezone-popover-wrapper__label"},[t("strong",{attrs:{id:e.timezoneDialogHeaderId}},[e._v(" "+e._s(e.t("Please select a time zone:"))+" ")])]),t("NcTimezonePicker",{staticClass:"timezone-popover-wrapper__timezone-select",on:{input:function(r){return e.$emit("update:timezone-id",arguments[0])}},model:{value:e.tzVal,callback:function(r){e.tzVal=r},expression:"tzVal"}})],1)]):t("CalendarBlank",{attrs:{size:20}})]},proxy:!0},e._l(e.$scopedSlots,function(r,T){return{key:T,fn:function(i){return[e._t(T,null,null,i)]}}})],null,!0)},"DatePicker",e.$attrs,!1),e.$listeners))},bi=[],_i=$0(vi,Ci,bi,!1,null,"3e415d44");const wi=_i.exports;Be(wi);export{wi as default}; -//# sourceMappingURL=NcDateTimePicker-CW1gVRKL.chunk.mjs.map +//# sourceMappingURL=NcDateTimePicker-CTU6-OE5.chunk.mjs.map diff --git a/js/NcDateTimePicker-CW1gVRKL.chunk.mjs.map b/js/NcDateTimePicker-CTU6-OE5.chunk.mjs.map similarity index 99% rename from js/NcDateTimePicker-CW1gVRKL.chunk.mjs.map rename to js/NcDateTimePicker-CTU6-OE5.chunk.mjs.map index 91effec0..c4d49904 100644 --- a/js/NcDateTimePicker-CW1gVRKL.chunk.mjs.map +++ b/js/NcDateTimePicker-CTU6-OE5.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcDateTimePicker-CW1gVRKL.chunk.mjs","sources":["../node_modules/date-format-parse/es/util.js","../node_modules/date-format-parse/es/locale/en.js","../node_modules/date-format-parse/es/format.js","../node_modules/date-format-parse/es/parse.js","../node_modules/vue2-datepicker/index.esm.js","../node_modules/ical.js/dist/ical.js","../node_modules/@nextcloud/timezones/dist/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcTimezonePicker-D4y736xC.mjs","../node_modules/@nextcloud/vue/dist/Components/NcDateTimePicker.mjs"],"sourcesContent":["export function isDate(value) {\n return value instanceof Date || Object.prototype.toString.call(value) === '[object Date]';\n}\nexport function toDate(value) {\n if (isDate(value)) {\n return new Date(value.getTime());\n }\n\n if (value == null) {\n return new Date(NaN);\n }\n\n return new Date(value);\n}\nexport function isValidDate(value) {\n return isDate(value) && !isNaN(value.getTime());\n}\nexport function startOfWeek(value) {\n var firstDayOfWeek = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (!(firstDayOfWeek >= 0 && firstDayOfWeek <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6');\n }\n\n var date = toDate(value);\n var day = date.getDay();\n var diff = (day + 7 - firstDayOfWeek) % 7;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nexport function startOfWeekYear(value) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$firstDayOfWeek = _ref.firstDayOfWeek,\n firstDayOfWeek = _ref$firstDayOfWeek === void 0 ? 0 : _ref$firstDayOfWeek,\n _ref$firstWeekContain = _ref.firstWeekContainsDate,\n firstWeekContainsDate = _ref$firstWeekContain === void 0 ? 1 : _ref$firstWeekContain;\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7');\n }\n\n var date = toDate(value);\n var year = date.getFullYear();\n var firstDateOfFirstWeek = new Date(0);\n\n for (var i = year + 1; i >= year - 1; i--) {\n firstDateOfFirstWeek.setFullYear(i, 0, firstWeekContainsDate);\n firstDateOfFirstWeek.setHours(0, 0, 0, 0);\n firstDateOfFirstWeek = startOfWeek(firstDateOfFirstWeek, firstDayOfWeek);\n\n if (date.getTime() >= firstDateOfFirstWeek.getTime()) {\n break;\n }\n }\n\n return firstDateOfFirstWeek;\n}\nexport function getWeek(value) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$firstDayOfWeek = _ref2.firstDayOfWeek,\n firstDayOfWeek = _ref2$firstDayOfWeek === void 0 ? 0 : _ref2$firstDayOfWeek,\n _ref2$firstWeekContai = _ref2.firstWeekContainsDate,\n firstWeekContainsDate = _ref2$firstWeekContai === void 0 ? 1 : _ref2$firstWeekContai;\n\n var date = toDate(value);\n var firstDateOfThisWeek = startOfWeek(date, firstDayOfWeek);\n var firstDateOfFirstWeek = startOfWeekYear(date, {\n firstDayOfWeek: firstDayOfWeek,\n firstWeekContainsDate: firstWeekContainsDate\n });\n var diff = firstDateOfThisWeek.getTime() - firstDateOfFirstWeek.getTime();\n return Math.round(diff / (7 * 24 * 3600 * 1000)) + 1;\n}","var locale = {\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n firstDayOfWeek: 0,\n firstWeekContainsDate: 1\n};\nexport default locale;","import { toDate, isValidDate, getWeek } from './util';\nimport defaultLocale from './locale/en';\nvar REGEX_FORMAT = /\\[([^\\]]+)]|YYYY|YY?|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|Z{1,2}|S{1,3}|w{1,2}|x|X|a|A/g;\n\nfunction pad(val) {\n var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var output = \"\".concat(Math.abs(val));\n var sign = val < 0 ? '-' : '';\n\n while (output.length < len) {\n output = \"0\".concat(output);\n }\n\n return sign + output;\n}\n\nfunction getOffset(date) {\n return Math.round(date.getTimezoneOffset() / 15) * 15;\n}\n\nfunction formatTimezone(offset) {\n var delimeter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n return sign + pad(hours, 2) + delimeter + pad(minutes, 2);\n}\n\nvar meridiem = function meridiem(h, _, isLowercase) {\n var word = h < 12 ? 'AM' : 'PM';\n return isLowercase ? word.toLocaleLowerCase() : word;\n};\n\nvar formatFlags = {\n Y: function Y(date) {\n var y = date.getFullYear();\n return y <= 9999 ? \"\".concat(y) : \"+\".concat(y);\n },\n // Year: 00, 01, ..., 99\n YY: function YY(date) {\n return pad(date.getFullYear(), 4).substr(2);\n },\n // Year: 1900, 1901, ..., 2099\n YYYY: function YYYY(date) {\n return pad(date.getFullYear(), 4);\n },\n // Month: 1, 2, ..., 12\n M: function M(date) {\n return date.getMonth() + 1;\n },\n // Month: 01, 02, ..., 12\n MM: function MM(date) {\n return pad(date.getMonth() + 1, 2);\n },\n MMM: function MMM(date, locale) {\n return locale.monthsShort[date.getMonth()];\n },\n MMMM: function MMMM(date, locale) {\n return locale.months[date.getMonth()];\n },\n // Day of month: 1, 2, ..., 31\n D: function D(date) {\n return date.getDate();\n },\n // Day of month: 01, 02, ..., 31\n DD: function DD(date) {\n return pad(date.getDate(), 2);\n },\n // Hour: 0, 1, ... 23\n H: function H(date) {\n return date.getHours();\n },\n // Hour: 00, 01, ..., 23\n HH: function HH(date) {\n return pad(date.getHours(), 2);\n },\n // Hour: 1, 2, ..., 12\n h: function h(date) {\n var hours = date.getHours();\n\n if (hours === 0) {\n return 12;\n }\n\n if (hours > 12) {\n return hours % 12;\n }\n\n return hours;\n },\n // Hour: 01, 02, ..., 12\n hh: function hh() {\n var hours = formatFlags.h.apply(formatFlags, arguments);\n return pad(hours, 2);\n },\n // Minute: 0, 1, ..., 59\n m: function m(date) {\n return date.getMinutes();\n },\n // Minute: 00, 01, ..., 59\n mm: function mm(date) {\n return pad(date.getMinutes(), 2);\n },\n // Second: 0, 1, ..., 59\n s: function s(date) {\n return date.getSeconds();\n },\n // Second: 00, 01, ..., 59\n ss: function ss(date) {\n return pad(date.getSeconds(), 2);\n },\n // 1/10 of second: 0, 1, ..., 9\n S: function S(date) {\n return Math.floor(date.getMilliseconds() / 100);\n },\n // 1/100 of second: 00, 01, ..., 99\n SS: function SS(date) {\n return pad(Math.floor(date.getMilliseconds() / 10), 2);\n },\n // Millisecond: 000, 001, ..., 999\n SSS: function SSS(date) {\n return pad(date.getMilliseconds(), 3);\n },\n // Day of week: 0, 1, ..., 6\n d: function d(date) {\n return date.getDay();\n },\n // Day of week: 'Su', 'Mo', ..., 'Sa'\n dd: function dd(date, locale) {\n return locale.weekdaysMin[date.getDay()];\n },\n // Day of week: 'Sun', 'Mon',..., 'Sat'\n ddd: function ddd(date, locale) {\n return locale.weekdaysShort[date.getDay()];\n },\n // Day of week: 'Sunday', 'Monday', ...,'Saturday'\n dddd: function dddd(date, locale) {\n return locale.weekdays[date.getDay()];\n },\n // AM, PM\n A: function A(date, locale) {\n var meridiemFunc = locale.meridiem || meridiem;\n return meridiemFunc(date.getHours(), date.getMinutes(), false);\n },\n // am, pm\n a: function a(date, locale) {\n var meridiemFunc = locale.meridiem || meridiem;\n return meridiemFunc(date.getHours(), date.getMinutes(), true);\n },\n // Timezone: -01:00, +00:00, ... +12:00\n Z: function Z(date) {\n return formatTimezone(getOffset(date), ':');\n },\n // Timezone: -0100, +0000, ... +1200\n ZZ: function ZZ(date) {\n return formatTimezone(getOffset(date));\n },\n // Seconds timestamp: 512969520\n X: function X(date) {\n return Math.floor(date.getTime() / 1000);\n },\n // Milliseconds timestamp: 512969520900\n x: function x(date) {\n return date.getTime();\n },\n w: function w(date, locale) {\n return getWeek(date, {\n firstDayOfWeek: locale.firstDayOfWeek,\n firstWeekContainsDate: locale.firstWeekContainsDate\n });\n },\n ww: function ww(date, locale) {\n return pad(formatFlags.w(date, locale), 2);\n }\n};\nexport function format(val, str) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var formatStr = str ? String(str) : 'YYYY-MM-DDTHH:mm:ss.SSSZ';\n var date = toDate(val);\n\n if (!isValidDate(date)) {\n return 'Invalid Date';\n }\n\n var locale = options.locale || defaultLocale;\n return formatStr.replace(REGEX_FORMAT, function (match, p1) {\n if (p1) {\n return p1;\n }\n\n if (typeof formatFlags[match] === 'function') {\n return \"\".concat(formatFlags[match](date, locale));\n }\n\n return match;\n });\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport defaultLocale from './locale/en';\nimport { startOfWeekYear } from './util';\nvar formattingTokens = /(\\[[^\\[]*\\])|(MM?M?M?|Do|DD?|ddd?d?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|S{1,3}|x|X|ZZ?|.)/g;\nvar match1 = /\\d/; // 0 - 9\n\nvar match2 = /\\d\\d/; // 00 - 99\n\nvar match3 = /\\d{3}/; // 000 - 999\n\nvar match4 = /\\d{4}/; // 0000 - 9999\n\nvar match1to2 = /\\d\\d?/; // 0 - 99\n\nvar matchShortOffset = /[+-]\\d\\d:?\\d\\d/; // +00:00 -00:00 +0000 or -0000\n\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n// const matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i; // Word\n\nvar YEAR = 'year';\nvar MONTH = 'month';\nvar DAY = 'day';\nvar HOUR = 'hour';\nvar MINUTE = 'minute';\nvar SECOND = 'second';\nvar MILLISECOND = 'millisecond';\nvar parseFlags = {};\n\nvar addParseFlag = function addParseFlag(token, regex, callback) {\n var tokens = Array.isArray(token) ? token : [token];\n var func;\n\n if (typeof callback === 'string') {\n func = function func(input) {\n var value = parseInt(input, 10);\n return _defineProperty({}, callback, value);\n };\n } else {\n func = callback;\n }\n\n tokens.forEach(function (key) {\n parseFlags[key] = [regex, func];\n });\n};\n\nvar escapeStringRegExp = function escapeStringRegExp(str) {\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n};\n\nvar matchWordRegExp = function matchWordRegExp(localeKey) {\n return function (locale) {\n var array = locale[localeKey];\n\n if (!Array.isArray(array)) {\n throw new Error(\"Locale[\".concat(localeKey, \"] need an array\"));\n }\n\n return new RegExp(array.map(escapeStringRegExp).join('|'));\n };\n};\n\nvar matchWordCallback = function matchWordCallback(localeKey, key) {\n return function (input, locale) {\n var array = locale[localeKey];\n\n if (!Array.isArray(array)) {\n throw new Error(\"Locale[\".concat(localeKey, \"] need an array\"));\n }\n\n var index = array.indexOf(input);\n\n if (index < 0) {\n throw new Error('Invalid Word');\n }\n\n return _defineProperty({}, key, index);\n };\n};\n\naddParseFlag('Y', matchSigned, YEAR);\naddParseFlag('YY', match2, function (input) {\n var year = new Date().getFullYear();\n var cent = Math.floor(year / 100);\n var value = parseInt(input, 10);\n value = (value > 68 ? cent - 1 : cent) * 100 + value;\n return _defineProperty({}, YEAR, value);\n});\naddParseFlag('YYYY', match4, YEAR);\naddParseFlag('M', match1to2, function (input) {\n return _defineProperty({}, MONTH, parseInt(input, 10) - 1);\n});\naddParseFlag('MM', match2, function (input) {\n return _defineProperty({}, MONTH, parseInt(input, 10) - 1);\n});\naddParseFlag('MMM', matchWordRegExp('monthsShort'), matchWordCallback('monthsShort', MONTH));\naddParseFlag('MMMM', matchWordRegExp('months'), matchWordCallback('months', MONTH));\naddParseFlag('D', match1to2, DAY);\naddParseFlag('DD', match2, DAY);\naddParseFlag(['H', 'h'], match1to2, HOUR);\naddParseFlag(['HH', 'hh'], match2, HOUR);\naddParseFlag('m', match1to2, MINUTE);\naddParseFlag('mm', match2, MINUTE);\naddParseFlag('s', match1to2, SECOND);\naddParseFlag('ss', match2, SECOND);\naddParseFlag('S', match1, function (input) {\n return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 100);\n});\naddParseFlag('SS', match2, function (input) {\n return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 10);\n});\naddParseFlag('SSS', match3, MILLISECOND);\n\nfunction matchMeridiem(locale) {\n return locale.meridiemParse || /[ap]\\.?m?\\.?/i;\n}\n\nfunction defaultIsPM(input) {\n return \"\".concat(input).toLowerCase().charAt(0) === 'p';\n}\n\naddParseFlag(['A', 'a'], matchMeridiem, function (input, locale) {\n var isPM = typeof locale.isPM === 'function' ? locale.isPM(input) : defaultIsPM(input);\n return {\n isPM: isPM\n };\n});\n\nfunction offsetFromString(str) {\n var _ref8 = str.match(/([+-]|\\d\\d)/g) || ['-', '0', '0'],\n _ref9 = _slicedToArray(_ref8, 3),\n symbol = _ref9[0],\n hour = _ref9[1],\n minute = _ref9[2];\n\n var minutes = parseInt(hour, 10) * 60 + parseInt(minute, 10);\n\n if (minutes === 0) {\n return 0;\n }\n\n return symbol === '+' ? -minutes : +minutes;\n}\n\naddParseFlag(['Z', 'ZZ'], matchShortOffset, function (input) {\n return {\n offset: offsetFromString(input)\n };\n});\naddParseFlag('x', matchSigned, function (input) {\n return {\n date: new Date(parseInt(input, 10))\n };\n});\naddParseFlag('X', matchTimestamp, function (input) {\n return {\n date: new Date(parseFloat(input) * 1000)\n };\n});\naddParseFlag('d', match1, 'weekday');\naddParseFlag('dd', matchWordRegExp('weekdaysMin'), matchWordCallback('weekdaysMin', 'weekday'));\naddParseFlag('ddd', matchWordRegExp('weekdaysShort'), matchWordCallback('weekdaysShort', 'weekday'));\naddParseFlag('dddd', matchWordRegExp('weekdays'), matchWordCallback('weekdays', 'weekday'));\naddParseFlag('w', match1to2, 'week');\naddParseFlag('ww', match2, 'week');\n\nfunction to24hour(hour, isPM) {\n if (hour !== undefined && isPM !== undefined) {\n if (isPM) {\n if (hour < 12) {\n return hour + 12;\n }\n } else if (hour === 12) {\n return 0;\n }\n }\n\n return hour;\n}\n\nfunction getFullInputArray(input) {\n var backupDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date();\n var result = [0, 0, 1, 0, 0, 0, 0];\n var backupArr = [backupDate.getFullYear(), backupDate.getMonth(), backupDate.getDate(), backupDate.getHours(), backupDate.getMinutes(), backupDate.getSeconds(), backupDate.getMilliseconds()];\n var useBackup = true;\n\n for (var i = 0; i < 7; i++) {\n if (input[i] === undefined) {\n result[i] = useBackup ? backupArr[i] : result[i];\n } else {\n result[i] = input[i];\n useBackup = false;\n }\n }\n\n return result;\n}\n\nfunction createDate(y, m, d, h, M, s, ms) {\n var date;\n\n if (y < 100 && y >= 0) {\n date = new Date(y + 400, m, d, h, M, s, ms);\n\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n}\n\nfunction createUTCDate() {\n var date;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var y = args[0];\n\n if (y < 100 && y >= 0) {\n args[0] += 400;\n date = new Date(Date.UTC.apply(Date, args)); // eslint-disable-next-line no-restricted-globals\n\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(Date, args));\n }\n\n return date;\n}\n\nfunction makeParser(dateString, format, locale) {\n var tokens = format.match(formattingTokens);\n\n if (!tokens) {\n throw new Error();\n }\n\n var length = tokens.length;\n var mark = {};\n\n for (var i = 0; i < length; i += 1) {\n var token = tokens[i];\n var parseTo = parseFlags[token];\n\n if (!parseTo) {\n var word = token.replace(/^\\[|\\]$/g, '');\n\n if (dateString.indexOf(word) === 0) {\n dateString = dateString.substr(word.length);\n } else {\n throw new Error('not match');\n }\n } else {\n var regex = typeof parseTo[0] === 'function' ? parseTo[0](locale) : parseTo[0];\n var parser = parseTo[1];\n var value = (regex.exec(dateString) || [])[0];\n var obj = parser(value, locale);\n mark = _objectSpread({}, mark, {}, obj);\n dateString = dateString.replace(value, '');\n }\n }\n\n return mark;\n}\n\nexport function parse(str, format) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n try {\n var _options$locale = options.locale,\n _locale = _options$locale === void 0 ? defaultLocale : _options$locale,\n _options$backupDate = options.backupDate,\n backupDate = _options$backupDate === void 0 ? new Date() : _options$backupDate;\n\n var parseResult = makeParser(str, format, _locale);\n var year = parseResult.year,\n month = parseResult.month,\n day = parseResult.day,\n hour = parseResult.hour,\n minute = parseResult.minute,\n second = parseResult.second,\n millisecond = parseResult.millisecond,\n isPM = parseResult.isPM,\n date = parseResult.date,\n offset = parseResult.offset,\n weekday = parseResult.weekday,\n week = parseResult.week;\n\n if (date) {\n return date;\n }\n\n var inputArray = [year, month, day, hour, minute, second, millisecond];\n inputArray[3] = to24hour(inputArray[3], isPM); // check week\n\n if (week !== undefined && month === undefined && day === undefined) {\n // new Date(year, 3) make sure in current year\n var firstDate = startOfWeekYear(year === undefined ? backupDate : new Date(year, 3), {\n firstDayOfWeek: _locale.firstDayOfWeek,\n firstWeekContainsDate: _locale.firstWeekContainsDate\n });\n return new Date(firstDate.getTime() + (week - 1) * 7 * 24 * 3600 * 1000);\n }\n\n var parsedDate;\n var result = getFullInputArray(inputArray, backupDate);\n\n if (offset !== undefined) {\n result[6] += offset * 60 * 1000;\n parsedDate = createUTCDate.apply(void 0, _toConsumableArray(result));\n } else {\n parsedDate = createDate.apply(void 0, _toConsumableArray(result));\n } // check weekday\n\n\n if (weekday !== undefined && parsedDate.getDay() !== weekday) {\n return new Date(NaN);\n }\n\n return parsedDate;\n } catch (e) {\n return new Date(NaN);\n }\n}","import { getWeek, format, parse } from 'date-format-parse';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _extends$1() {\n return _extends$1 = Object.assign || function (a) {\n for (var b, c = 1; c < arguments.length; c++) {\n for (var d in b = arguments[c], b) {\n Object.prototype.hasOwnProperty.call(b, d) && (a[d] = b[d]);\n }\n }\n\n return a;\n }, _extends$1.apply(this, arguments);\n}\n\nvar normalMerge = [\"attrs\", \"props\", \"domProps\"],\n toArrayMerge = [\"class\", \"style\", \"directives\"],\n functionalMerge = [\"on\", \"nativeOn\"],\n mergeJsxProps = function mergeJsxProps(a) {\n return a.reduce(function (c, a) {\n for (var b in a) {\n if (!c[b]) c[b] = a[b];else if (-1 !== normalMerge.indexOf(b)) c[b] = _extends$1({}, c[b], a[b]);else if (-1 !== toArrayMerge.indexOf(b)) {\n var d = c[b] instanceof Array ? c[b] : [c[b]],\n e = a[b] instanceof Array ? a[b] : [a[b]];\n c[b] = d.concat(e);\n } else if (-1 !== functionalMerge.indexOf(b)) {\n for (var f in a[b]) {\n if (c[b][f]) {\n var g = c[b][f] instanceof Array ? c[b][f] : [c[b][f]],\n h = a[b][f] instanceof Array ? a[b][f] : [a[b][f]];\n c[b][f] = g.concat(h);\n } else c[b][f] = a[b][f];\n }\n } else if (\"hook\" == b) for (var i in a[b]) {\n c[b][i] = c[b][i] ? mergeFn(c[b][i], a[b][i]) : a[b][i];\n } else c[b] = a[b];\n }\n\n return c;\n }, {});\n},\n mergeFn = function mergeFn(a, b) {\n return function () {\n a && a.apply(this, arguments), b && b.apply(this, arguments);\n };\n};\n\nvar helper = mergeJsxProps;\n\n// new Date(10, 0, 1) The year from 0 to 99 will be incremented by 1900 automatically.\nfunction createDate(y) {\n var M = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var d = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var h = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var m = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var s = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n var ms = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;\n var date = new Date(y, M, d, h, m, s, ms);\n\n if (y < 100 && y >= 0) {\n date.setFullYear(y);\n }\n\n return date;\n}\nfunction isValidDate(date) {\n return date instanceof Date && !isNaN(date);\n}\nfunction isValidRangeDate(date) {\n return Array.isArray(date) && date.length === 2 && date.every(isValidDate) && date[0] <= date[1];\n}\nfunction isValidDates(dates) {\n return Array.isArray(dates) && dates.every(isValidDate);\n}\nfunction getValidDate(value) {\n var date = new Date(value);\n\n if (isValidDate(date)) {\n return date;\n }\n\n for (var _len = arguments.length, backup = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n backup[_key - 1] = arguments[_key];\n }\n\n if (backup.length) {\n return getValidDate.apply(void 0, backup);\n }\n\n return new Date();\n}\nfunction startOfYear(value) {\n var date = new Date(value);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction startOfMonth(value) {\n var date = new Date(value);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction startOfDay(value) {\n var date = new Date(value);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction getCalendar(_ref) {\n var firstDayOfWeek = _ref.firstDayOfWeek,\n year = _ref.year,\n month = _ref.month;\n var arr = []; // change to the last day of the last month\n\n var calendar = createDate(year, month, 0);\n var lastDayInLastMonth = calendar.getDate(); // getDay() 0 is Sunday, 1 is Monday\n\n var firstDayInLastMonth = lastDayInLastMonth - (calendar.getDay() + 7 - firstDayOfWeek) % 7;\n\n for (var i = firstDayInLastMonth; i <= lastDayInLastMonth; i++) {\n arr.push(createDate(year, month, i - lastDayInLastMonth));\n } // change to the last day of the current month\n\n\n calendar.setMonth(month + 1, 0);\n var lastDayInCurrentMonth = calendar.getDate();\n\n for (var _i = 1; _i <= lastDayInCurrentMonth; _i++) {\n arr.push(createDate(year, month, _i));\n }\n\n var lastMonthLength = lastDayInLastMonth - firstDayInLastMonth + 1;\n var nextMonthLength = 6 * 7 - lastMonthLength - lastDayInCurrentMonth;\n\n for (var _i2 = 1; _i2 <= nextMonthLength; _i2++) {\n arr.push(createDate(year, month, lastDayInCurrentMonth + _i2));\n }\n\n return arr;\n}\nfunction setMonth(dirtyDate, dirtyMonth) {\n var date = new Date(dirtyDate);\n var month = typeof dirtyMonth === 'function' ? dirtyMonth(date.getMonth()) : Number(dirtyMonth);\n var year = date.getFullYear();\n var daysInMonth = createDate(year, month + 1, 0).getDate();\n var day = date.getDate();\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}\nfunction setYear(dirtyDate, dirtyYear) {\n var date = new Date(dirtyDate);\n var year = typeof dirtyYear === 'function' ? dirtyYear(date.getFullYear()) : dirtyYear;\n date.setFullYear(year);\n return date;\n}\nfunction assignTime(target, source) {\n var date = new Date(target);\n var time = new Date(source);\n date.setHours(time.getHours(), time.getMinutes(), time.getSeconds());\n return date;\n}\n\n/**\n * chunk the array\n * @param {Array} arr\n * @param {Number} size\n */\nfunction chunk(arr, size) {\n if (!Array.isArray(arr)) {\n return [];\n }\n\n var result = [];\n var len = arr.length;\n var i = 0;\n size = size || len;\n\n while (i < len) {\n result.push(arr.slice(i, i += size));\n }\n\n return result;\n}\n/**\n * isObject\n * @param {*} obj\n * @returns {Boolean}\n */\n\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\n/**\n * pick object\n * @param {Object} obj\n * @param {Array|String} props\n */\n\nfunction pick(obj, props) {\n if (!isObject(obj)) return {};\n\n if (!Array.isArray(props)) {\n props = [props];\n }\n\n var res = {};\n props.forEach(function (prop) {\n if (prop in obj) {\n res[prop] = obj[prop];\n }\n });\n return res;\n}\n/**\n * deep merge two object without merging array\n * @param {object} target\n * @param {object} source\n */\n\nfunction mergeDeep(target, source) {\n if (!isObject(target)) {\n return {};\n }\n\n var result = target;\n\n if (isObject(source)) {\n Object.keys(source).forEach(function (key) {\n var value = source[key];\n\n if (isObject(value) && isObject(target[key])) {\n value = mergeDeep(target[key], value);\n }\n\n result = _objectSpread2({}, result, _defineProperty({}, key, value));\n });\n }\n\n return result;\n}\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar en = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar locale = {\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n firstDayOfWeek: 0,\n firstWeekContainsDate: 1\n};\nvar _default = locale;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n});\n\nvar en$1 = unwrapExports(en);\n\nvar lang = {\n formatLocale: en$1,\n yearFormat: 'YYYY',\n monthFormat: 'MMM',\n monthBeforeYear: true\n};\n\nvar defaultLocale = 'en';\nvar locales = {};\nlocales[defaultLocale] = lang;\nfunction locale(name, object, isLocal) {\n if (typeof name !== 'string') return locales[defaultLocale];\n var l = defaultLocale;\n\n if (locales[name]) {\n l = name;\n }\n\n if (object) {\n locales[name] = object;\n l = name;\n }\n\n if (!isLocal) {\n defaultLocale = l;\n }\n\n return locales[name] || locales[defaultLocale];\n}\n/**\n * get locale object\n * @param {string} name lang\n */\n\nfunction getLocale(name) {\n return locale(name, null, true);\n}\n\n/* istanbul ignore file */\nfunction rafThrottle(fn) {\n var isRunning = false;\n return function fnBinfRaf() {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (isRunning) return;\n isRunning = true;\n requestAnimationFrame(function () {\n isRunning = false;\n fn.apply(_this, args);\n });\n };\n}\n\n/**\n * get the hidden element width, height\n * @param {HTMLElement} element dom\n */\nfunction getPopupElementSize(element) {\n var originalDisplay = element.style.display;\n var originalVisibility = element.style.visibility;\n element.style.display = 'block';\n element.style.visibility = 'hidden';\n var styles = window.getComputedStyle(element);\n var width = element.offsetWidth + parseInt(styles.marginLeft, 10) + parseInt(styles.marginRight, 10);\n var height = element.offsetHeight + parseInt(styles.marginTop, 10) + parseInt(styles.marginBottom, 10);\n element.style.display = originalDisplay;\n element.style.visibility = originalVisibility;\n return {\n width: width,\n height: height\n };\n}\n/**\n * get the popup position\n * @param {HTMLElement} el relative element\n * @param {Number} targetWidth target element's width\n * @param {Number} targetHeight target element's height\n * @param {Boolean} fixed\n */\n\nfunction getRelativePosition(el, targetWidth, targetHeight, fixed) {\n var left = 0;\n var top = 0;\n var offsetX = 0;\n var offsetY = 0;\n var relativeRect = el.getBoundingClientRect();\n var dw = document.documentElement.clientWidth;\n var dh = document.documentElement.clientHeight;\n\n if (fixed) {\n offsetX = window.pageXOffset + relativeRect.left;\n offsetY = window.pageYOffset + relativeRect.top;\n }\n\n if (dw - relativeRect.left < targetWidth && relativeRect.right < targetWidth) {\n left = offsetX - relativeRect.left + 1;\n } else if (relativeRect.left + relativeRect.width / 2 <= dw / 2) {\n left = offsetX;\n } else {\n left = offsetX + relativeRect.width - targetWidth;\n }\n\n if (relativeRect.top <= targetHeight && dh - relativeRect.bottom <= targetHeight) {\n top = offsetY + dh - relativeRect.top - targetHeight;\n } else if (relativeRect.top + relativeRect.height / 2 <= dh / 2) {\n top = offsetY + relativeRect.height;\n } else {\n top = offsetY - targetHeight;\n }\n\n return {\n left: \"\".concat(left, \"px\"),\n top: \"\".concat(top, \"px\")\n };\n}\nfunction getScrollParent(node) {\n var until = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.body;\n\n if (!node || node === until) {\n return null;\n }\n\n var style = function style(value, prop) {\n return getComputedStyle(value, null).getPropertyValue(prop);\n };\n\n var regex = /(auto|scroll)/;\n var scroll = regex.test(style(node, 'overflow') + style(node, 'overflow-y') + style(node, 'overflow-x'));\n return scroll ? node : getScrollParent(node.parentNode, until);\n}\n\n//\nvar script = {\n name: 'Popup',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n visible: {\n type: Boolean,\n default: false\n },\n appendToBody: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n top: '',\n left: ''\n };\n },\n watch: {\n visible: {\n immediate: true,\n handler: function handler(val) {\n var _this = this;\n\n this.$nextTick(function () {\n if (val) {\n _this.displayPopup();\n }\n });\n }\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n if (this.appendToBody) {\n document.body.appendChild(this.$el);\n }\n\n this._clickoutEvent = 'ontouchend' in document ? 'touchstart' : 'mousedown';\n document.addEventListener(this._clickoutEvent, this.handleClickOutside); // change the popup position when resize or scroll\n\n var relativeElement = this.$parent.$el;\n this._displayPopup = rafThrottle(function () {\n return _this2.displayPopup();\n });\n this._scrollParent = getScrollParent(relativeElement) || window;\n\n this._scrollParent.addEventListener('scroll', this._displayPopup);\n\n window.addEventListener('resize', this._displayPopup);\n },\n beforeDestroy: function beforeDestroy() {\n if (this.appendToBody && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n\n document.removeEventListener(this._clickoutEvent, this.handleClickOutside);\n\n this._scrollParent.removeEventListener('scroll', this._displayPopup);\n\n window.removeEventListener('resize', this._displayPopup);\n },\n methods: {\n handleClickOutside: function handleClickOutside(evt) {\n if (!this.visible) return;\n var target = evt.target;\n var el = this.$el;\n\n if (el && !el.contains(target)) {\n this.$emit('clickoutside', evt);\n }\n },\n displayPopup: function displayPopup() {\n if (!this.visible) return;\n var popup = this.$el;\n var relativeElement = this.$parent.$el;\n var appendToBody = this.appendToBody;\n\n if (!this._popupRect) {\n this._popupRect = getPopupElementSize(popup);\n }\n\n var _this$_popupRect = this._popupRect,\n width = _this$_popupRect.width,\n height = _this$_popupRect.height;\n\n var _getRelativePosition = getRelativePosition(relativeElement, width, height, appendToBody),\n left = _getRelativePosition.left,\n top = _getRelativePosition.top;\n\n this.left = left;\n this.top = top;\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n/* server only */\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n } // Vue.extend constructor export interop.\n\n\n var options = typeof script === 'function' ? script.options : script; // render functions\n\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true; // functional template\n\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n } // scopedId\n\n\n if (scopeId) {\n options._scopeId = scopeId;\n }\n\n var hook;\n\n if (moduleIdentifier) {\n // server build\n hook = function hook(context) {\n // 2.3 injection\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n } // inject component styles\n\n\n if (style) {\n style.call(this, createInjectorSSR(context));\n } // register component module identifier for async chunk inference\n\n\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n }; // used by ssr in case component is cached and beforeCreate\n // never gets called\n\n\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function (context) {\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n var originalRender = options.render;\n\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n\n return script;\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('transition', {\n attrs: {\n \"name\": _vm.prefixClass + \"-zoom-in-down\"\n }\n }, [_vm.visible ? _c('div', {\n class: _vm.prefixClass + \"-datepicker-main \" + _vm.prefixClass + \"-datepicker-popup\",\n style: {\n top: _vm.top,\n left: _vm.left,\n position: 'absolute'\n }\n }, [_vm._t(\"default\")], 2) : _vm._e()]);\n};\n\nvar __vue_staticRenderFns__ = [];\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ = normalizeComponent({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\n/* script */\n\n/* template */\nvar __vue_render__$1 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('svg', {\n attrs: {\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": \"0 0 1024 1024\",\n \"width\": \"1em\",\n \"height\": \"1em\"\n }\n }, [_c('path', {\n attrs: {\n \"d\": \"M940.218182 107.054545h-209.454546V46.545455h-65.163636v60.50909H363.054545V46.545455H297.890909v60.50909H83.781818c-18.618182 0-32.581818 13.963636-32.581818 32.581819v805.236363c0 18.618182 13.963636 32.581818 32.581818 32.581818h861.090909c18.618182 0 32.581818-13.963636 32.581818-32.581818V139.636364c-4.654545-18.618182-18.618182-32.581818-37.236363-32.581819zM297.890909 172.218182V232.727273h65.163636V172.218182h307.2V232.727273h65.163637V172.218182h176.872727v204.8H116.363636V172.218182h181.527273zM116.363636 912.290909V442.181818h795.927273v470.109091H116.363636z\"\n }\n })]);\n};\n\nvar __vue_staticRenderFns__$1 = [];\n/* style */\n\nvar __vue_inject_styles__$1 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$1 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$1 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$1 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$1 = normalizeComponent({\n render: __vue_render__$1,\n staticRenderFns: __vue_staticRenderFns__$1\n}, __vue_inject_styles__$1, {}, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, false, undefined, undefined, undefined);\n\n/* script */\n\n/* template */\nvar __vue_render__$2 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('svg', {\n attrs: {\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": \"0 0 24 24\",\n \"width\": \"1em\",\n \"height\": \"1em\"\n }\n }, [_c('path', {\n attrs: {\n \"d\": \"M0 0h24v24H0z\",\n \"fill\": \"none\"\n }\n }), _vm._v(\" \"), _c('path', {\n attrs: {\n \"d\": \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }\n }), _vm._v(\" \"), _c('path', {\n attrs: {\n \"d\": \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n }\n })]);\n};\n\nvar __vue_staticRenderFns__$2 = [];\n/* style */\n\nvar __vue_inject_styles__$2 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$2 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$2 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$2 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$2 = normalizeComponent({\n render: __vue_render__$2,\n staticRenderFns: __vue_staticRenderFns__$2\n}, __vue_inject_styles__$2, {}, __vue_scope_id__$2, __vue_is_functional_template__$2, __vue_module_identifier__$2, false, undefined, undefined, undefined);\n\n/* script */\n\n/* template */\nvar __vue_render__$3 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('svg', {\n attrs: {\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": \"0 0 1024 1024\",\n \"width\": \"1em\",\n \"height\": \"1em\"\n }\n }, [_c('path', {\n attrs: {\n \"d\": \"M810.005333 274.005333l-237.994667 237.994667 237.994667 237.994667-60.010667 60.010667-237.994667-237.994667-237.994667 237.994667-60.010667-60.010667 237.994667-237.994667-237.994667-237.994667 60.010667-60.010667 237.994667 237.994667 237.994667-237.994667z\"\n }\n })]);\n};\n\nvar __vue_staticRenderFns__$3 = [];\n/* style */\n\nvar __vue_inject_styles__$3 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$3 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$3 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$3 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$3 = normalizeComponent({\n render: __vue_render__$3,\n staticRenderFns: __vue_staticRenderFns__$3\n}, __vue_inject_styles__$3, {}, __vue_scope_id__$3, __vue_is_functional_template__$3, __vue_module_identifier__$3, false, undefined, undefined, undefined);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar script$1 = {\n props: {\n type: String,\n disabled: Boolean\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n }\n};\n\n/* script */\nvar __vue_script__$1 = script$1;\n/* template */\n\nvar __vue_render__$4 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('button', _vm._g({\n class: [_vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text \" + _vm.prefixClass + \"-btn-icon-\" + _vm.type, {\n disabled: _vm.disabled\n }],\n attrs: {\n \"type\": \"button\",\n \"disabled\": _vm.disabled\n }\n }, _vm.$listeners), [_c('i', {\n class: _vm.prefixClass + \"-icon-\" + _vm.type\n })]);\n};\n\nvar __vue_staticRenderFns__$4 = [];\n/* style */\n\nvar __vue_inject_styles__$4 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$4 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$4 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$4 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$4 = normalizeComponent({\n render: __vue_render__$4,\n staticRenderFns: __vue_staticRenderFns__$4\n}, __vue_inject_styles__$4, __vue_script__$1, __vue_scope_id__$4, __vue_is_functional_template__$4, __vue_module_identifier__$4, false, undefined, undefined, undefined);\n\nvar script$2 = {\n name: 'TableDate',\n components: {\n IconButton: __vue_component__$4\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n getWeek: {\n default: function _default() {\n return getWeek;\n }\n },\n prefixClass: {\n default: 'mx'\n },\n onDateMouseEnter: {\n default: undefined\n },\n onDateMouseLeave: {\n default: undefined\n }\n },\n props: {\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n calendar: {\n type: Date,\n default: function _default() {\n return new Date();\n }\n },\n showWeekNumber: {\n type: Boolean,\n default: false\n },\n titleFormat: {\n type: String,\n default: 'YYYY-MM-DD'\n },\n getRowClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n getCellClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n firstDayOfWeek: function firstDayOfWeek() {\n return this.getLocale().formatLocale.firstDayOfWeek || 0;\n },\n yearMonth: function yearMonth() {\n var _this$getLocale = this.getLocale(),\n yearFormat = _this$getLocale.yearFormat,\n monthBeforeYear = _this$getLocale.monthBeforeYear,\n _this$getLocale$month = _this$getLocale.monthFormat,\n monthFormat = _this$getLocale$month === void 0 ? 'MMM' : _this$getLocale$month;\n\n var yearLabel = {\n panel: 'year',\n label: this.formatDate(this.calendar, yearFormat)\n };\n var monthLabel = {\n panel: 'month',\n label: this.formatDate(this.calendar, monthFormat)\n };\n return monthBeforeYear ? [monthLabel, yearLabel] : [yearLabel, monthLabel];\n },\n days: function days() {\n var locale = this.getLocale();\n var days = locale.days || locale.formatLocale.weekdaysMin;\n return days.concat(days).slice(this.firstDayOfWeek, this.firstDayOfWeek + 7);\n },\n dates: function dates() {\n var year = this.calendar.getFullYear();\n var month = this.calendar.getMonth();\n var arr = getCalendar({\n firstDayOfWeek: this.firstDayOfWeek,\n year: year,\n month: month\n });\n return chunk(arr, 7);\n }\n },\n methods: {\n isDisabledArrows: function isDisabledArrows(type) {\n var date = new Date(this.calendar);\n\n switch (type) {\n case 'last-year':\n date.setFullYear(date.getFullYear() - 1, date.getMonth() + 1, 0);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-year':\n date.setFullYear(date.getFullYear() + 1);\n break;\n\n case 'last-month':\n date.setMonth(date.getMonth(), 0);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-month':\n date.setMonth(date.getMonth() + 1);\n break;\n }\n\n return this.disabledCalendarChanger(date, type);\n },\n handleIconLeftClick: function handleIconLeftClick() {\n this.$emit('changecalendar', setMonth(this.calendar, function (v) {\n return v - 1;\n }), 'last-month');\n },\n handleIconRightClick: function handleIconRightClick() {\n this.$emit('changecalendar', setMonth(this.calendar, function (v) {\n return v + 1;\n }), 'next-month');\n },\n handleIconDoubleLeftClick: function handleIconDoubleLeftClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v - 1;\n }), 'last-year');\n },\n handleIconDoubleRightClick: function handleIconDoubleRightClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v + 1;\n }), 'next-year');\n },\n handlePanelChange: function handlePanelChange(panel) {\n this.$emit('changepanel', panel);\n },\n handleMouseEnter: function handleMouseEnter(cell) {\n if (typeof this.onDateMouseEnter === 'function') {\n this.onDateMouseEnter(cell);\n }\n },\n handleMouseLeave: function handleMouseLeave(cell) {\n if (typeof this.onDateMouseLeave === 'function') {\n this.onDateMouseLeave(cell);\n }\n },\n handleCellClick: function handleCellClick(evt) {\n var target = evt.target;\n\n if (target.tagName.toUpperCase() === 'DIV') {\n target = target.parentNode;\n }\n\n var index = target.getAttribute('data-row-col');\n\n if (index) {\n var _index$split$map = index.split(',').map(function (v) {\n return parseInt(v, 10);\n }),\n _index$split$map2 = _slicedToArray(_index$split$map, 2),\n row = _index$split$map2[0],\n col = _index$split$map2[1];\n\n var date = this.dates[row][col];\n this.$emit('select', new Date(date));\n }\n },\n formatDate: function formatDate(date, fmt) {\n return format(date, fmt, {\n locale: this.getLocale().formatLocale\n });\n },\n getCellTitle: function getCellTitle(date) {\n var fmt = this.titleFormat;\n return this.formatDate(date, fmt);\n },\n getWeekNumber: function getWeekNumber(date) {\n return this.getWeek(date, this.getLocale().formatLocale);\n }\n }\n};\n\n/* script */\nvar __vue_script__$2 = script$2;\n/* template */\n\nvar __vue_render__$5 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-calendar \" + _vm.prefixClass + \"-calendar-panel-date\"\n }, [_c('div', {\n class: _vm.prefixClass + \"-calendar-header\"\n }, [_c('icon-button', {\n attrs: {\n \"type\": \"double-left\",\n \"disabled\": _vm.isDisabledArrows('last-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"left\",\n \"disabled\": _vm.isDisabledArrows('last-month')\n },\n on: {\n \"click\": _vm.handleIconLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"double-right\",\n \"disabled\": _vm.isDisabledArrows('next-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleRightClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"right\",\n \"disabled\": _vm.isDisabledArrows('next-month')\n },\n on: {\n \"click\": _vm.handleIconRightClick\n }\n }), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-header-label\"\n }, _vm._l(_vm.yearMonth, function (item) {\n return _c('button', {\n key: item.panel,\n class: _vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text \" + _vm.prefixClass + \"-btn-current-\" + item.panel,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function click($event) {\n return _vm.handlePanelChange(item.panel);\n }\n }\n }, [_vm._v(\"\\n \" + _vm._s(item.label) + \"\\n \")]);\n }), 0)], 1), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-calendar-content\"\n }, [_c('table', {\n class: _vm.prefixClass + \"-table \" + _vm.prefixClass + \"-table-date\"\n }, [_c('thead', [_c('tr', [_vm.showWeekNumber ? _c('th', {\n class: _vm.prefixClass + \"-week-number-header\"\n }) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.days, function (day) {\n return _c('th', {\n key: day\n }, [_vm._v(_vm._s(day))]);\n })], 2)]), _vm._v(\" \"), _c('tbody', {\n on: {\n \"click\": _vm.handleCellClick\n }\n }, _vm._l(_vm.dates, function (row, i) {\n return _c('tr', {\n key: i,\n class: [_vm.prefixClass + \"-date-row\", _vm.getRowClasses(row)]\n }, [_vm.showWeekNumber ? _c('td', {\n class: _vm.prefixClass + \"-week-number\",\n attrs: {\n \"data-row-col\": i + \",0\"\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.getWeekNumber(row[0])) + \"\\n \")]) : _vm._e(), _vm._v(\" \"), _vm._l(row, function (cell, j) {\n return _c('td', {\n key: j,\n staticClass: \"cell\",\n class: _vm.getCellClasses(cell),\n attrs: {\n \"data-row-col\": i + \",\" + j,\n \"title\": _vm.getCellTitle(cell)\n },\n on: {\n \"mouseenter\": function mouseenter($event) {\n return _vm.handleMouseEnter(cell);\n },\n \"mouseleave\": function mouseleave($event) {\n return _vm.handleMouseLeave(cell);\n }\n }\n }, [_c('div', [_vm._v(_vm._s(cell.getDate()))])]);\n })], 2);\n }), 0)])])]);\n};\n\nvar __vue_staticRenderFns__$5 = [];\n/* style */\n\nvar __vue_inject_styles__$5 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$5 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$5 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$5 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$5 = normalizeComponent({\n render: __vue_render__$5,\n staticRenderFns: __vue_staticRenderFns__$5\n}, __vue_inject_styles__$5, __vue_script__$2, __vue_scope_id__$5, __vue_is_functional_template__$5, __vue_module_identifier__$5, false, undefined, undefined, undefined);\n\n//\nvar script$3 = {\n name: 'TableMonth',\n components: {\n IconButton: __vue_component__$4\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n calendar: {\n type: Date,\n default: function _default() {\n return new Date();\n }\n },\n getCellClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n calendarYear: function calendarYear() {\n return this.calendar.getFullYear();\n },\n months: function months() {\n var locale = this.getLocale();\n var monthsLocale = locale.months || locale.formatLocale.monthsShort;\n var months = monthsLocale.map(function (text, month) {\n return {\n text: text,\n month: month\n };\n });\n return chunk(months, 3);\n }\n },\n methods: {\n isDisabledArrows: function isDisabledArrows(type) {\n var date = new Date(this.calendar);\n\n switch (type) {\n case 'last-year':\n date.setFullYear(date.getFullYear() - 1, 11, 31);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-year':\n date.setFullYear(date.getFullYear() + 1, 0, 1);\n break;\n }\n\n return this.disabledCalendarChanger(date, type);\n },\n handleIconDoubleLeftClick: function handleIconDoubleLeftClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v - 1;\n }), 'last-year');\n },\n handleIconDoubleRightClick: function handleIconDoubleRightClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v + 1;\n }), 'next-year');\n },\n handlePanelChange: function handlePanelChange() {\n this.$emit('changepanel', 'year');\n },\n handleClick: function handleClick(evt) {\n var target = evt.target;\n\n if (target.tagName.toUpperCase() === 'DIV') {\n target = target.parentNode;\n }\n\n var month = target.getAttribute('data-month');\n\n if (month && !target.classList.contains('disabled')) {\n this.$emit('select', parseInt(month, 10));\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$3 = script$3;\n/* template */\n\nvar __vue_render__$6 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-calendar \" + _vm.prefixClass + \"-calendar-panel-month\"\n }, [_c('div', {\n class: _vm.prefixClass + \"-calendar-header\"\n }, [_c('icon-button', {\n attrs: {\n \"type\": \"double-left\",\n \"disabled\": _vm.isDisabledArrows('last-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"double-right\",\n \"disabled\": _vm.isDisabledArrows('next-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleRightClick\n }\n }), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-header-label\"\n }, [_c('button', {\n class: _vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": _vm.handlePanelChange\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.calendarYear) + \"\\n \")])])], 1), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-calendar-content\"\n }, [_c('table', {\n class: _vm.prefixClass + \"-table \" + _vm.prefixClass + \"-table-month\",\n on: {\n \"click\": _vm.handleClick\n }\n }, _vm._l(_vm.months, function (row, i) {\n return _c('tr', {\n key: i\n }, _vm._l(row, function (cell, j) {\n return _c('td', {\n key: j,\n staticClass: \"cell\",\n class: _vm.getCellClasses(cell.month),\n attrs: {\n \"data-month\": cell.month\n }\n }, [_c('div', [_vm._v(_vm._s(cell.text))])]);\n }), 0);\n }), 0)])]);\n};\n\nvar __vue_staticRenderFns__$6 = [];\n/* style */\n\nvar __vue_inject_styles__$6 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$6 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$6 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$6 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$6 = normalizeComponent({\n render: __vue_render__$6,\n staticRenderFns: __vue_staticRenderFns__$6\n}, __vue_inject_styles__$6, __vue_script__$3, __vue_scope_id__$6, __vue_is_functional_template__$6, __vue_module_identifier__$6, false, undefined, undefined, undefined);\n\n//\nvar script$4 = {\n name: 'TableYear',\n components: {\n IconButton: __vue_component__$4\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n calendar: {\n type: Date,\n default: function _default() {\n return new Date();\n }\n },\n getCellClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n getYearPanel: {\n type: Function\n }\n },\n computed: {\n years: function years() {\n var calendar = new Date(this.calendar);\n\n if (typeof this.getYearPanel === 'function') {\n return this.getYearPanel(calendar);\n }\n\n return this.getYears(calendar);\n },\n firstYear: function firstYear() {\n return this.years[0][0];\n },\n lastYear: function lastYear() {\n var last = function last(arr) {\n return arr[arr.length - 1];\n };\n\n return last(last(this.years));\n }\n },\n methods: {\n isDisabledArrows: function isDisabledArrows(type) {\n var date = new Date(this.calendar);\n\n switch (type) {\n case 'last-decade':\n date.setFullYear(this.firstYear - 1, 11, 31);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-decade':\n date.setFullYear(this.lastYear + 1, 0, 1);\n break;\n }\n\n return this.disabledCalendarChanger(date, type);\n },\n getYears: function getYears(calendar) {\n var firstYear = Math.floor(calendar.getFullYear() / 10) * 10;\n var years = [];\n\n for (var i = 0; i < 10; i++) {\n years.push(firstYear + i);\n }\n\n return chunk(years, 2);\n },\n handleIconDoubleLeftClick: function handleIconDoubleLeftClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v - 10;\n }), 'last-decade');\n },\n handleIconDoubleRightClick: function handleIconDoubleRightClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v + 10;\n }), 'next-decade');\n },\n handleClick: function handleClick(evt) {\n var target = evt.target;\n\n if (target.tagName.toUpperCase() === 'DIV') {\n target = target.parentNode;\n }\n\n var year = target.getAttribute('data-year');\n\n if (year && !target.classList.contains('disabled')) {\n this.$emit('select', parseInt(year, 10));\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$4 = script$4;\n/* template */\n\nvar __vue_render__$7 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-calendar \" + _vm.prefixClass + \"-calendar-panel-year\"\n }, [_c('div', {\n class: _vm.prefixClass + \"-calendar-header\"\n }, [_c('icon-button', {\n attrs: {\n \"type\": \"double-left\",\n \"disabled\": _vm.isDisabledArrows('last-decade')\n },\n on: {\n \"click\": _vm.handleIconDoubleLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"double-right\",\n \"disabled\": _vm.isDisabledArrows('next-decade')\n },\n on: {\n \"click\": _vm.handleIconDoubleRightClick\n }\n }), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-header-label\"\n }, [_c('span', [_vm._v(_vm._s(_vm.firstYear))]), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-decade-separator\"\n }), _vm._v(\" \"), _c('span', [_vm._v(_vm._s(_vm.lastYear))])])], 1), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-calendar-content\"\n }, [_c('table', {\n class: _vm.prefixClass + \"-table \" + _vm.prefixClass + \"-table-year\",\n on: {\n \"click\": _vm.handleClick\n }\n }, _vm._l(_vm.years, function (row, i) {\n return _c('tr', {\n key: i\n }, _vm._l(row, function (cell, j) {\n return _c('td', {\n key: j,\n staticClass: \"cell\",\n class: _vm.getCellClasses(cell),\n attrs: {\n \"data-year\": cell\n }\n }, [_c('div', [_vm._v(_vm._s(cell))])]);\n }), 0);\n }), 0)])]);\n};\n\nvar __vue_staticRenderFns__$7 = [];\n/* style */\n\nvar __vue_inject_styles__$7 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$7 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$7 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$7 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$7 = normalizeComponent({\n render: __vue_render__$7,\n staticRenderFns: __vue_staticRenderFns__$7\n}, __vue_inject_styles__$7, __vue_script__$4, __vue_scope_id__$7, __vue_is_functional_template__$7, __vue_module_identifier__$7, false, undefined, undefined, undefined);\n\nvar CalendarPanel = {\n name: 'CalendarPanel',\n inject: {\n prefixClass: {\n default: 'mx'\n },\n dispatchDatePicker: {\n default: function _default() {\n return function () {};\n }\n }\n },\n props: {\n value: {},\n defaultValue: {\n default: function _default() {\n var date = new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n }\n },\n defaultPanel: {\n type: String\n },\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n disabledDate: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n type: {\n type: String,\n default: 'date'\n },\n getClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n showWeekNumber: {\n type: Boolean,\n default: undefined\n },\n getYearPanel: {\n type: Function\n },\n titleFormat: {\n type: String,\n default: 'YYYY-MM-DD'\n },\n calendar: Date,\n // update date when select year or month\n partialUpdate: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n var panels = ['date', 'month', 'year'];\n var index = Math.max(panels.indexOf(this.type), panels.indexOf(this.defaultPanel));\n var panel = index !== -1 ? panels[index] : 'date';\n return {\n panel: panel,\n innerCalendar: new Date()\n };\n },\n computed: {\n innerValue: function innerValue() {\n var value = Array.isArray(this.value) ? this.value : [this.value];\n var map = {\n year: startOfYear,\n month: startOfMonth,\n date: startOfDay\n };\n var start = map[this.type] || map.date;\n return value.filter(isValidDate).map(function (v) {\n return start(v);\n });\n },\n calendarYear: function calendarYear() {\n return this.innerCalendar.getFullYear();\n },\n calendarMonth: function calendarMonth() {\n return this.innerCalendar.getMonth();\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: 'initCalendar'\n },\n calendar: {\n handler: 'initCalendar'\n },\n defaultValue: {\n handler: 'initCalendar'\n }\n },\n methods: {\n initCalendar: function initCalendar() {\n var calendarDate = this.calendar;\n\n if (!isValidDate(calendarDate)) {\n var length = this.innerValue.length;\n calendarDate = getValidDate(length > 0 ? this.innerValue[length - 1] : this.defaultValue);\n }\n\n this.innerCalendar = startOfMonth(calendarDate);\n },\n isDisabled: function isDisabled(date) {\n return this.disabledDate(new Date(date), this.innerValue);\n },\n emitDate: function emitDate(date, type) {\n if (!this.isDisabled(date)) {\n this.$emit('select', date, type, this.innerValue); // someone need get the first selected date to set range value. (#429)\n\n this.dispatchDatePicker('pick', date, type);\n }\n },\n handleCalendarChange: function handleCalendarChange(calendar, type) {\n var oldCalendar = new Date(this.innerCalendar);\n this.innerCalendar = calendar;\n this.$emit('update:calendar', calendar);\n this.dispatchDatePicker('calendar-change', calendar, oldCalendar, type);\n },\n handelPanelChange: function handelPanelChange(panel) {\n var oldPanel = this.panel;\n this.panel = panel;\n this.dispatchDatePicker('panel-change', panel, oldPanel);\n },\n handleSelectYear: function handleSelectYear(year) {\n if (this.type === 'year') {\n var date = this.getYearCellDate(year);\n this.emitDate(date, 'year');\n } else {\n this.handleCalendarChange(createDate(year, this.calendarMonth), 'year');\n this.handelPanelChange('month');\n\n if (this.partialUpdate && this.innerValue.length === 1) {\n var _date = new Date(this.innerValue[0]);\n\n _date.setFullYear(year);\n\n this.emitDate(_date, 'year');\n }\n }\n },\n handleSelectMonth: function handleSelectMonth(month) {\n if (this.type === 'month') {\n var date = this.getMonthCellDate(month);\n this.emitDate(date, 'month');\n } else {\n this.handleCalendarChange(createDate(this.calendarYear, month), 'month');\n this.handelPanelChange('date');\n\n if (this.partialUpdate && this.innerValue.length === 1) {\n var _date2 = new Date(this.innerValue[0]);\n\n _date2.setFullYear(this.calendarYear);\n\n this.emitDate(setMonth(_date2, month), 'month');\n }\n }\n },\n handleSelectDate: function handleSelectDate(date) {\n this.emitDate(date, this.type === 'week' ? 'week' : 'date');\n },\n getMonthCellDate: function getMonthCellDate(month) {\n return createDate(this.calendarYear, month);\n },\n getYearCellDate: function getYearCellDate(year) {\n return createDate(year, 0);\n },\n getDateClasses: function getDateClasses(cellDate) {\n var notCurrentMonth = cellDate.getMonth() !== this.calendarMonth;\n var classes = [];\n\n if (cellDate.getTime() === new Date().setHours(0, 0, 0, 0)) {\n classes.push('today');\n }\n\n if (notCurrentMonth) {\n classes.push('not-current-month');\n }\n\n var state = this.getStateClass(cellDate);\n\n if (!(state === 'active' && notCurrentMonth)) {\n classes.push(state);\n }\n\n return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n },\n getMonthClasses: function getMonthClasses(month) {\n var classes = [];\n\n if (this.type !== 'month') {\n if (this.calendarMonth === month) {\n classes.push('active');\n }\n\n var _cellDate = this.getMonthCellDate(month);\n\n if (this.disabledCalendarChanger(_cellDate, 'month')) {\n classes.push('disabled');\n }\n\n return classes;\n }\n\n var cellDate = this.getMonthCellDate(month);\n classes.push(this.getStateClass(cellDate));\n return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n },\n getYearClasses: function getYearClasses(year) {\n var classes = [];\n\n if (this.type !== 'year') {\n if (this.calendarYear === year) {\n classes.push('active');\n }\n\n var _cellDate2 = this.getYearCellDate(year);\n\n if (this.disabledCalendarChanger(_cellDate2, 'year')) {\n classes.push('disabled');\n }\n\n return classes;\n }\n\n var cellDate = this.getYearCellDate(year);\n classes.push(this.getStateClass(cellDate));\n return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n },\n getStateClass: function getStateClass(cellDate) {\n if (this.isDisabled(cellDate)) {\n return 'disabled';\n }\n\n if (this.innerValue.some(function (v) {\n return v.getTime() === cellDate.getTime();\n })) {\n return 'active';\n }\n\n return '';\n },\n getWeekState: function getWeekState(row) {\n if (this.type !== 'week') return '';\n var start = row[0].getTime();\n var end = row[6].getTime();\n var active = this.innerValue.some(function (v) {\n var time = v.getTime();\n return time >= start && time <= end;\n });\n return active ? \"\".concat(this.prefixClass, \"-active-week\") : '';\n }\n },\n render: function render() {\n var h = arguments[0];\n var panel = this.panel,\n innerCalendar = this.innerCalendar;\n\n if (panel === 'year') {\n return h(__vue_component__$7, {\n \"attrs\": {\n \"disabledCalendarChanger\": this.disabledCalendarChanger,\n \"calendar\": innerCalendar,\n \"getCellClasses\": this.getYearClasses,\n \"getYearPanel\": this.getYearPanel\n },\n \"on\": {\n \"select\": this.handleSelectYear,\n \"changecalendar\": this.handleCalendarChange\n }\n });\n }\n\n if (panel === 'month') {\n return h(__vue_component__$6, {\n \"attrs\": {\n \"disabledCalendarChanger\": this.disabledCalendarChanger,\n \"calendar\": innerCalendar,\n \"getCellClasses\": this.getMonthClasses\n },\n \"on\": {\n \"select\": this.handleSelectMonth,\n \"changepanel\": this.handelPanelChange,\n \"changecalendar\": this.handleCalendarChange\n }\n });\n }\n\n return h(__vue_component__$5, {\n \"attrs\": {\n \"disabledCalendarChanger\": this.disabledCalendarChanger,\n \"calendar\": innerCalendar,\n \"getCellClasses\": this.getDateClasses,\n \"getRowClasses\": this.getWeekState,\n \"titleFormat\": this.titleFormat,\n \"showWeekNumber\": typeof this.showWeekNumber === 'boolean' ? this.showWeekNumber : this.type === 'week'\n },\n \"class\": _defineProperty({}, \"\".concat(this.prefixClass, \"-calendar-week-mode\"), this.type === 'week'),\n \"on\": {\n \"select\": this.handleSelectDate,\n \"changepanel\": this.handelPanelChange,\n \"changecalendar\": this.handleCalendarChange\n }\n });\n }\n};\n\nvar CalendarRange = {\n name: 'CalendarRange',\n components: {\n CalendarPanel: CalendarPanel\n },\n provide: function provide() {\n return {\n onDateMouseEnter: this.onDateMouseEnter,\n onDateMouseLeave: this.onDateMouseLeave\n };\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: _objectSpread2({}, CalendarPanel.props),\n data: function data() {\n return {\n innerValue: [],\n calendars: [],\n hoveredValue: null\n };\n },\n computed: {\n // Minimum difference between start and end calendars\n calendarMinDiff: function calendarMinDiff() {\n var map = {\n date: 1,\n // type:date min 1 month\n month: 1 * 12,\n // type:month min 1 year\n year: 10 * 12 // type:year min 10 year\n\n };\n return map[this.type] || map.date;\n },\n calendarMaxDiff: function calendarMaxDiff() {\n return Infinity;\n },\n defaultValues: function defaultValues() {\n return Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue, this.defaultValue];\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler() {\n var _this = this;\n\n this.innerValue = isValidRangeDate(this.value) ? this.value : [new Date(NaN), new Date(NaN)];\n var calendars = this.innerValue.map(function (v, i) {\n return startOfMonth(getValidDate(v, _this.defaultValues[i]));\n });\n this.updateCalendars(calendars);\n }\n }\n },\n methods: {\n handleSelect: function handleSelect(date, type) {\n var _this$innerValue = _slicedToArray(this.innerValue, 2),\n startValue = _this$innerValue[0],\n endValue = _this$innerValue[1];\n\n if (isValidDate(startValue) && !isValidDate(endValue)) {\n if (startValue.getTime() > date.getTime()) {\n this.innerValue = [date, startValue];\n } else {\n this.innerValue = [startValue, date];\n }\n\n this.emitDate(this.innerValue, type);\n } else {\n this.innerValue = [date, new Date(NaN)];\n }\n },\n onDateMouseEnter: function onDateMouseEnter(cell) {\n this.hoveredValue = cell;\n },\n onDateMouseLeave: function onDateMouseLeave() {\n this.hoveredValue = null;\n },\n emitDate: function emitDate(dates, type) {\n this.$emit('select', dates, type);\n },\n updateStartCalendar: function updateStartCalendar(value) {\n this.updateCalendars([value, this.calendars[1]], 1);\n },\n updateEndCalendar: function updateEndCalendar(value) {\n this.updateCalendars([this.calendars[0], value], 0);\n },\n updateCalendars: function updateCalendars(calendars) {\n var adjustIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var gap = this.getCalendarGap(calendars);\n\n if (gap) {\n var calendar = new Date(calendars[adjustIndex]);\n calendar.setMonth(calendar.getMonth() + (adjustIndex === 0 ? -gap : gap));\n calendars[adjustIndex] = calendar;\n }\n\n this.calendars = calendars;\n },\n getCalendarGap: function getCalendarGap(calendars) {\n var _calendars = _slicedToArray(calendars, 2),\n calendarLeft = _calendars[0],\n calendarRight = _calendars[1];\n\n var yearDiff = calendarRight.getFullYear() - calendarLeft.getFullYear();\n var monthDiff = calendarRight.getMonth() - calendarLeft.getMonth();\n var diff = yearDiff * 12 + monthDiff;\n var min = this.calendarMinDiff;\n var max = this.calendarMaxDiff;\n\n if (diff < min) {\n return min - diff;\n }\n\n if (diff > max) {\n return max - diff;\n }\n\n return 0;\n },\n getRangeClasses: function getRangeClasses(cellDate, currentDates, classnames) {\n var classes = [].concat(this.getClasses(cellDate, currentDates, classnames));\n if (/disabled|active/.test(classnames)) return classes;\n\n var inRange = function inRange(data, range) {\n var fn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (v) {\n return v.getTime();\n };\n var value = fn(data);\n\n var _range$map = range.map(fn),\n _range$map2 = _slicedToArray(_range$map, 2),\n min = _range$map2[0],\n max = _range$map2[1];\n\n if (min > max) {\n var _ref = [max, min];\n min = _ref[0];\n max = _ref[1];\n }\n\n return value > min && value < max;\n };\n\n if (currentDates.length === 2 && inRange(cellDate, currentDates)) {\n return classes.concat('in-range');\n }\n\n if (currentDates.length === 1 && this.hoveredValue && inRange(cellDate, [currentDates[0], this.hoveredValue])) {\n return classes.concat('hover-in-range');\n }\n\n return classes;\n }\n },\n render: function render() {\n var _this2 = this;\n\n var h = arguments[0];\n var calendarRange = this.calendars.map(function (calendar, index) {\n var props = _objectSpread2({}, _this2.$props, {\n calendar: calendar,\n value: _this2.innerValue,\n defaultValue: _this2.defaultValues[index],\n getClasses: _this2.getRangeClasses,\n // don't update when range is true\n partialUpdate: false\n });\n\n var on = {\n select: _this2.handleSelect,\n 'update:calendar': index === 0 ? _this2.updateStartCalendar : _this2.updateEndCalendar\n };\n return h(\"calendar-panel\", {\n \"props\": _objectSpread2({}, props),\n \"on\": _objectSpread2({}, on)\n });\n });\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-range-wrapper\")\n }, [calendarRange]);\n }\n};\n\nvar scrollBarWidth;\nfunction getScrollbarWidth () {\n if (typeof window === 'undefined') return 0;\n if (scrollBarWidth !== undefined) return scrollBarWidth;\n var outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll';\n outer.style.width = '100px';\n outer.style.position = 'absolute';\n outer.style.top = '-9999px';\n document.body.appendChild(outer);\n var inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n scrollBarWidth = outer.offsetWidth - inner.offsetWidth;\n outer.parentNode.removeChild(outer);\n return scrollBarWidth;\n}\n\n//\nvar script$5 = {\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n data: function data() {\n return {\n scrollbarWidth: 0,\n thumbTop: '',\n thumbHeight: ''\n };\n },\n created: function created() {\n this.scrollbarWidth = getScrollbarWidth();\n document.addEventListener('mouseup', this.handleDragend);\n },\n beforeDestroy: function beforeDestroy() {\n document.addEventListener('mouseup', this.handleDragend);\n },\n mounted: function mounted() {\n this.$nextTick(this.getThumbSize);\n },\n methods: {\n getThumbSize: function getThumbSize() {\n var wrap = this.$refs.wrap;\n if (!wrap) return;\n var heightPercentage = wrap.clientHeight * 100 / wrap.scrollHeight;\n this.thumbHeight = heightPercentage < 100 ? \"\".concat(heightPercentage, \"%\") : '';\n },\n handleScroll: function handleScroll(evt) {\n var el = evt.currentTarget;\n var scrollHeight = el.scrollHeight,\n scrollTop = el.scrollTop;\n this.thumbTop = \"\".concat(scrollTop * 100 / scrollHeight, \"%\");\n },\n handleDragstart: function handleDragstart(evt) {\n evt.stopImmediatePropagation();\n this._draggable = true;\n var offsetTop = this.$refs.thumb.offsetTop;\n this._prevY = evt.clientY - offsetTop;\n document.addEventListener('mousemove', this.handleDraging);\n },\n handleDraging: function handleDraging(evt) {\n if (!this._draggable) return;\n var clientY = evt.clientY;\n var wrap = this.$refs.wrap;\n var scrollHeight = wrap.scrollHeight,\n clientHeight = wrap.clientHeight;\n var offsetY = clientY - this._prevY;\n var top = offsetY * scrollHeight / clientHeight;\n wrap.scrollTop = top;\n },\n handleDragend: function handleDragend() {\n if (this._draggable) {\n this._draggable = false;\n document.removeEventListener('mousemove', this.handleDraging);\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$5 = script$5;\n/* template */\n\nvar __vue_render__$8 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-scrollbar\",\n style: {\n position: 'relative',\n overflow: 'hidden'\n }\n }, [_c('div', {\n ref: \"wrap\",\n class: _vm.prefixClass + \"-scrollbar-wrap\",\n style: {\n marginRight: \"-\" + _vm.scrollbarWidth + \"px\"\n },\n on: {\n \"scroll\": _vm.handleScroll\n }\n }, [_vm._t(\"default\")], 2), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-scrollbar-track\"\n }, [_c('div', {\n ref: \"thumb\",\n class: _vm.prefixClass + \"-scrollbar-thumb\",\n style: {\n height: _vm.thumbHeight,\n top: _vm.thumbTop\n },\n on: {\n \"mousedown\": _vm.handleDragstart\n }\n })])]);\n};\n\nvar __vue_staticRenderFns__$8 = [];\n/* style */\n\nvar __vue_inject_styles__$8 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$8 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$8 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$8 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$8 = normalizeComponent({\n render: __vue_render__$8,\n staticRenderFns: __vue_staticRenderFns__$8\n}, __vue_inject_styles__$8, __vue_script__$5, __vue_scope_id__$8, __vue_is_functional_template__$8, __vue_module_identifier__$8, false, undefined, undefined, undefined);\n\n//\n\nvar padNumber = function padNumber(value) {\n value = parseInt(value, 10);\n return value < 10 ? \"0\".concat(value) : \"\".concat(value);\n};\n\nvar generateOptions = function generateOptions(length, step, options) {\n if (Array.isArray(options)) {\n return options.filter(function (v) {\n return v >= 0 && v < length;\n });\n }\n\n if (step <= 0) {\n step = 1;\n }\n\n var arr = [];\n\n for (var i = 0; i < length; i += step) {\n arr.push(i);\n }\n\n return arr;\n};\n\nvar scrollTo = function scrollTo(element, to) {\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n // jump to target if duration zero\n if (duration <= 0) {\n requestAnimationFrame(function () {\n element.scrollTop = to;\n });\n return;\n }\n\n var difference = to - element.scrollTop;\n var tick = difference / duration * 10;\n requestAnimationFrame(function () {\n var scrollTop = element.scrollTop + tick;\n\n if (scrollTop >= to) {\n element.scrollTop = to;\n return;\n }\n\n element.scrollTop = scrollTop;\n scrollTo(element, to, duration - 10);\n });\n};\n\nvar script$6 = {\n name: 'ListColumns',\n components: {\n ScrollbarVertical: __vue_component__$8\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n date: Date,\n scrollDuration: {\n type: Number,\n default: 100\n },\n getClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n hourOptions: Array,\n minuteOptions: Array,\n secondOptions: Array,\n showHour: {\n type: Boolean,\n default: true\n },\n showMinute: {\n type: Boolean,\n default: true\n },\n showSecond: {\n type: Boolean,\n default: true\n },\n hourStep: {\n type: Number,\n default: 1\n },\n minuteStep: {\n type: Number,\n default: 1\n },\n secondStep: {\n type: Number,\n default: 1\n },\n use12h: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n columns: function columns() {\n var cols = [];\n if (this.showHour) cols.push({\n type: 'hour',\n list: this.getHoursList()\n });\n if (this.showMinute) cols.push({\n type: 'minute',\n list: this.getMinutesList()\n });\n if (this.showSecond) cols.push({\n type: 'second',\n list: this.getSecondsList()\n });\n if (this.use12h) cols.push({\n type: 'ampm',\n list: this.getAMPMList()\n });\n return cols.filter(function (v) {\n return v.list.length > 0;\n });\n }\n },\n watch: {\n date: {\n handler: function handler() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.scrollToSelected(_this.scrollDuration);\n });\n }\n }\n },\n mounted: function mounted() {\n this.scrollToSelected(0);\n },\n methods: {\n getHoursList: function getHoursList() {\n var _this2 = this;\n\n return generateOptions(this.use12h ? 12 : 24, this.hourStep, this.hourOptions).map(function (num) {\n var date = new Date(_this2.date);\n var text = padNumber(num);\n\n if (_this2.use12h) {\n if (num === 0) {\n text = '12';\n }\n\n if (date.getHours() >= 12) {\n num += 12;\n }\n }\n\n var value = date.setHours(num);\n return {\n value: value,\n text: text\n };\n });\n },\n getMinutesList: function getMinutesList() {\n var _this3 = this;\n\n return generateOptions(60, this.minuteStep, this.minuteOptions).map(function (num) {\n var value = new Date(_this3.date).setMinutes(num);\n return {\n value: value,\n text: padNumber(num)\n };\n });\n },\n getSecondsList: function getSecondsList() {\n var _this4 = this;\n\n return generateOptions(60, this.secondStep, this.secondOptions).map(function (num) {\n var value = new Date(_this4.date).setSeconds(num);\n return {\n value: value,\n text: padNumber(num)\n };\n });\n },\n getAMPMList: function getAMPMList() {\n var _this5 = this;\n\n return ['AM', 'PM'].map(function (text, i) {\n var date = new Date(_this5.date);\n var value = date.setHours(date.getHours() % 12 + i * 12);\n return {\n text: text,\n value: value\n };\n });\n },\n scrollToSelected: function scrollToSelected(duration) {\n var elements = this.$el.querySelectorAll('.active');\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var scrollElement = getScrollParent(element, this.$el);\n\n if (scrollElement) {\n var to = element.offsetTop;\n scrollTo(scrollElement, to, duration);\n }\n }\n },\n handleSelect: function handleSelect(evt) {\n var target = evt.target,\n currentTarget = evt.currentTarget;\n if (target.tagName.toUpperCase() !== 'LI') return;\n var type = currentTarget.getAttribute('data-type');\n var colIndex = parseInt(currentTarget.getAttribute('data-index'), 10);\n var cellIndex = parseInt(target.getAttribute('data-index'), 10);\n var value = this.columns[colIndex].list[cellIndex].value;\n this.$emit('select', value, type);\n }\n }\n};\n\n/* script */\nvar __vue_script__$6 = script$6;\n/* template */\n\nvar __vue_render__$9 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-time-columns\"\n }, _vm._l(_vm.columns, function (col, i) {\n return _c('scrollbar-vertical', {\n key: i,\n class: _vm.prefixClass + \"-time-column\"\n }, [_c('ul', {\n class: _vm.prefixClass + \"-time-list\",\n attrs: {\n \"data-type\": col.type,\n \"data-index\": i\n },\n on: {\n \"click\": _vm.handleSelect\n }\n }, _vm._l(col.list, function (item, j) {\n return _c('li', {\n key: item.value,\n class: [_vm.prefixClass + \"-time-item\", _vm.getClasses(item.value, col.type)],\n attrs: {\n \"data-index\": j\n }\n }, [_vm._v(\"\\n \" + _vm._s(item.text) + \"\\n \")]);\n }), 0)]);\n }), 1);\n};\n\nvar __vue_staticRenderFns__$9 = [];\n/* style */\n\nvar __vue_inject_styles__$9 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$9 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$9 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$9 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$9 = normalizeComponent({\n render: __vue_render__$9,\n staticRenderFns: __vue_staticRenderFns__$9\n}, __vue_inject_styles__$9, __vue_script__$6, __vue_scope_id__$9, __vue_is_functional_template__$9, __vue_module_identifier__$9, false, undefined, undefined, undefined);\n\n//\n\nfunction parseOption() {\n var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var values = time.split(':');\n\n if (values.length >= 2) {\n var hours = parseInt(values[0], 10);\n var minutes = parseInt(values[1], 10);\n return {\n hours: hours,\n minutes: minutes\n };\n }\n\n return null;\n}\n\nvar scrollTo$1 = function scrollTo(element, to) {\n if (element) {\n element.scrollTop = to;\n }\n};\n\nvar script$7 = {\n name: 'ListOptions',\n components: {\n ScrollbarVertical: __vue_component__$8\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n date: Date,\n options: {\n type: [Object, Function],\n default: function _default() {\n return [];\n }\n },\n format: {\n type: String,\n default: 'HH:mm:ss'\n },\n getClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n list: function list() {\n var result = [];\n var options = this.options;\n\n if (typeof options === 'function') {\n return options() || [];\n }\n\n var start = parseOption(options.start);\n var end = parseOption(options.end);\n var step = parseOption(options.step);\n var fmt = options.format || this.format;\n\n if (start && end && step) {\n var startMinutes = start.minutes + start.hours * 60;\n var endMinutes = end.minutes + end.hours * 60;\n var stepMinutes = step.minutes + step.hours * 60;\n var len = Math.floor((endMinutes - startMinutes) / stepMinutes);\n\n for (var i = 0; i <= len; i++) {\n var timeMinutes = startMinutes + i * stepMinutes;\n var hours = Math.floor(timeMinutes / 60);\n var minutes = timeMinutes % 60;\n var value = new Date(this.date).setHours(hours, minutes, 0);\n result.push({\n value: value,\n text: this.formatDate(value, fmt)\n });\n }\n }\n\n return result;\n }\n },\n mounted: function mounted() {\n this.scrollToSelected();\n },\n methods: {\n formatDate: function formatDate(date, fmt) {\n return format(date, fmt, {\n locale: this.getLocale().formatLocale\n });\n },\n scrollToSelected: function scrollToSelected() {\n var element = this.$el.querySelector('.active');\n if (!element) return;\n var scrollElement = getScrollParent(element, this.$el);\n if (!scrollElement) return;\n var to = element.offsetTop;\n scrollTo$1(scrollElement, to);\n },\n handleSelect: function handleSelect(value) {\n this.$emit('select', value, 'time');\n }\n }\n};\n\n/* script */\nvar __vue_script__$7 = script$7;\n/* template */\n\nvar __vue_render__$a = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('scrollbar-vertical', _vm._l(_vm.list, function (item) {\n return _c('div', {\n key: item.value,\n class: [_vm.prefixClass + \"-time-option\", _vm.getClasses(item.value)],\n on: {\n \"click\": function click($event) {\n return _vm.handleSelect(item.value);\n }\n }\n }, [_vm._v(\"\\n \" + _vm._s(item.text) + \"\\n \")]);\n }), 0);\n};\n\nvar __vue_staticRenderFns__$a = [];\n/* style */\n\nvar __vue_inject_styles__$a = undefined;\n/* scoped */\n\nvar __vue_scope_id__$a = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$a = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$a = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$a = normalizeComponent({\n render: __vue_render__$a,\n staticRenderFns: __vue_staticRenderFns__$a\n}, __vue_inject_styles__$a, __vue_script__$7, __vue_scope_id__$a, __vue_is_functional_template__$a, __vue_module_identifier__$a, false, undefined, undefined, undefined);\n\n//\nvar script$8 = {\n name: 'TimePanel',\n components: {\n ListColumns: __vue_component__$9,\n ListOptions: __vue_component__$a\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n value: {},\n defaultValue: {\n default: function _default() {\n var date = new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n }\n },\n format: {\n default: 'HH:mm:ss'\n },\n timeTitleFormat: {\n type: String,\n default: 'YYYY-MM-DD'\n },\n showTimeHeader: {\n type: Boolean,\n default: false\n },\n disabledTime: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n timePickerOptions: {\n type: [Object, Function],\n default: function _default() {\n return null;\n }\n },\n hourOptions: Array,\n minuteOptions: Array,\n secondOptions: Array,\n hourStep: {\n type: Number,\n default: 1\n },\n minuteStep: {\n type: Number,\n default: 1\n },\n secondStep: {\n type: Number,\n default: 1\n },\n showHour: {\n type: Boolean,\n default: undefined\n },\n showMinute: {\n type: Boolean,\n default: undefined\n },\n showSecond: {\n type: Boolean,\n default: undefined\n },\n use12h: {\n type: Boolean,\n default: undefined\n },\n scrollDuration: {\n type: Number,\n default: 100\n }\n },\n data: function data() {\n return {\n innerValue: getValidDate(this.value, this.defaultValue)\n };\n },\n computed: {\n title: function title() {\n var titleFormat = this.timeTitleFormat;\n var date = new Date(this.innerValue);\n return this.formatDate(date, titleFormat);\n },\n innerForamt: function innerForamt() {\n return typeof this.format === 'string' ? this.format : 'HH:mm:ss';\n },\n ShowHourMinuteSecondAMPM: function ShowHourMinuteSecondAMPM() {\n var _this = this;\n\n var fmt = this.innerForamt;\n var defaultProps = {\n showHour: /[HhKk]/.test(fmt),\n showMinute: /m/.test(fmt),\n showSecond: /s/.test(fmt),\n use12h: /a/i.test(fmt)\n };\n var obj = {};\n Object.keys(defaultProps).forEach(function (key) {\n obj[key] = typeof _this[key] === 'boolean' ? _this[key] : defaultProps[key];\n });\n return obj;\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler() {\n this.innerValue = getValidDate(this.value, this.defaultValue);\n }\n }\n },\n methods: {\n formatDate: function formatDate(date, fmt) {\n return format(date, fmt, {\n locale: this.getLocale().formatLocale\n });\n },\n isDisabledTime: function isDisabledTime(value) {\n return this.disabledTime(new Date(value));\n },\n isDisabledHour: function isDisabledHour(date) {\n var value = new Date(date);\n return this.isDisabledTime(value) && this.isDisabledTime(value.setMinutes(0, 0, 0)) && this.isDisabledTime(value.setMinutes(59, 59, 999));\n },\n isDisabledMinute: function isDisabledMinute(date) {\n var value = new Date(date);\n return this.isDisabledTime(value) && this.isDisabledTime(value.setSeconds(0, 0)) && this.isDisabledTime(value.setSeconds(59, 999));\n },\n isDisabledAMPM: function isDisabledAMPM(date) {\n var value = new Date(date);\n var minHour = value.getHours() < 12 ? 0 : 12;\n var maxHour = minHour + 11;\n return this.isDisabledTime(value) && this.isDisabledTime(value.setHours(minHour, 0, 0, 0)) && this.isDisabledTime(value.setHours(maxHour, 59, 59, 999));\n },\n isDisabled: function isDisabled(date, type) {\n if (type === 'hour') {\n return this.isDisabledHour(date);\n }\n\n if (type === 'minute') {\n return this.isDisabledMinute(date);\n }\n\n if (type === 'ampm') {\n return this.isDisabledAMPM(date);\n }\n\n return this.isDisabledTime(date);\n },\n handleSelect: function handleSelect(value, type) {\n var date = new Date(value);\n\n if (!this.isDisabled(value, type)) {\n this.innerValue = date;\n\n if (!this.isDisabledTime(date)) {\n this.$emit('select', date, type);\n }\n }\n },\n handleClickTitle: function handleClickTitle() {\n this.$emit('clicktitle');\n },\n getClasses: function getClasses(value, type) {\n var cellDate = new Date(value);\n\n if (this.isDisabled(value, type)) {\n return 'disabled';\n }\n\n if (cellDate.getTime() === this.innerValue.getTime()) {\n return 'active';\n }\n\n return '';\n }\n }\n};\n\n/* script */\nvar __vue_script__$8 = script$8;\n/* template */\n\nvar __vue_render__$b = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-time\"\n }, [_vm.showTimeHeader ? _c('div', {\n class: _vm.prefixClass + \"-time-header\"\n }, [_c('button', {\n class: _vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text \" + _vm.prefixClass + \"-time-header-title\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": _vm.handleClickTitle\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.title) + \"\\n \")])]) : _vm._e(), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-time-content\"\n }, [_vm.timePickerOptions ? _c('list-options', {\n attrs: {\n \"date\": _vm.innerValue,\n \"get-classes\": _vm.getClasses,\n \"options\": _vm.timePickerOptions,\n \"format\": _vm.innerForamt\n },\n on: {\n \"select\": _vm.handleSelect\n }\n }) : _c('list-columns', _vm._b({\n attrs: {\n \"date\": _vm.innerValue,\n \"get-classes\": _vm.getClasses,\n \"hour-options\": _vm.hourOptions,\n \"minute-options\": _vm.minuteOptions,\n \"second-options\": _vm.secondOptions,\n \"hour-step\": _vm.hourStep,\n \"minute-step\": _vm.minuteStep,\n \"second-step\": _vm.secondStep,\n \"scroll-duration\": _vm.scrollDuration\n },\n on: {\n \"select\": _vm.handleSelect\n }\n }, 'list-columns', _vm.ShowHourMinuteSecondAMPM, false))], 1)]);\n};\n\nvar __vue_staticRenderFns__$b = [];\n/* style */\n\nvar __vue_inject_styles__$b = undefined;\n/* scoped */\n\nvar __vue_scope_id__$b = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$b = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$b = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$b = normalizeComponent({\n render: __vue_render__$b,\n staticRenderFns: __vue_staticRenderFns__$b\n}, __vue_inject_styles__$b, __vue_script__$8, __vue_scope_id__$b, __vue_is_functional_template__$b, __vue_module_identifier__$b, false, undefined, undefined, undefined);\n\nvar TimeRange = {\n name: 'TimeRange',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: _objectSpread2({}, __vue_component__$b.props),\n data: function data() {\n return {\n startValue: new Date(NaN),\n endValue: new Date(NaN)\n };\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler() {\n if (isValidRangeDate(this.value)) {\n var _this$value = _slicedToArray(this.value, 2),\n startValue = _this$value[0],\n endValue = _this$value[1];\n\n this.startValue = startValue;\n this.endValue = endValue;\n } else {\n this.startValue = new Date(NaN);\n this.endValue = new Date(NaN);\n }\n }\n }\n },\n methods: {\n emitChange: function emitChange(type, index) {\n var date = [this.startValue, this.endValue];\n this.$emit('select', date, type === 'time' ? 'time-range' : type, index);\n },\n handleSelectStart: function handleSelectStart(date, type) {\n this.startValue = date; // check the NaN\n\n if (!(this.endValue.getTime() >= date.getTime())) {\n this.endValue = date;\n }\n\n this.emitChange(type, 0);\n },\n handleSelectEnd: function handleSelectEnd(date, type) {\n // check the NaN\n this.endValue = date;\n\n if (!(this.startValue.getTime() <= date.getTime())) {\n this.startValue = date;\n }\n\n this.emitChange(type, 1);\n },\n disabledStartTime: function disabledStartTime(date) {\n return this.disabledTime(date, 0);\n },\n disabledEndTime: function disabledEndTime(date) {\n return date.getTime() < this.startValue.getTime() || this.disabledTime(date, 1);\n }\n },\n render: function render() {\n var h = arguments[0];\n var defaultValues = Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue, this.defaultValue];\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-range-wrapper\")\n }, [h(__vue_component__$b, {\n \"props\": _objectSpread2({}, _objectSpread2({}, this.$props, {\n value: this.startValue,\n defaultValue: defaultValues[0],\n disabledTime: this.disabledStartTime\n })),\n \"on\": _objectSpread2({}, _objectSpread2({}, this.$listeners, {\n select: this.handleSelectStart\n }))\n }), h(__vue_component__$b, {\n \"props\": _objectSpread2({}, _objectSpread2({}, this.$props, {\n value: this.endValue,\n defaultValue: defaultValues[1],\n disabledTime: this.disabledEndTime\n })),\n \"on\": _objectSpread2({}, _objectSpread2({}, this.$listeners, {\n select: this.handleSelectEnd\n }))\n })]);\n }\n};\n\nvar DatetimePanel = {\n name: 'DatetimePanel',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n emits: ['select', 'update:show-time-panel'],\n props: _objectSpread2({}, CalendarPanel.props, {}, __vue_component__$b.props, {\n showTimePanel: {\n type: Boolean,\n default: undefined\n }\n }),\n data: function data() {\n return {\n defaultTimeVisible: false,\n currentValue: this.value\n };\n },\n computed: {\n timeVisible: function timeVisible() {\n return typeof this.showTimePanel === 'boolean' ? this.showTimePanel : this.defaultTimeVisible;\n }\n },\n watch: {\n value: function value(val) {\n this.currentValue = val;\n }\n },\n methods: {\n closeTimePanel: function closeTimePanel() {\n this.defaultTimeVisible = false;\n this.$emit('update:show-time-panel', false);\n },\n openTimePanel: function openTimePanel() {\n this.defaultTimeVisible = true;\n this.$emit('update:show-time-panel', true);\n },\n emitDate: function emitDate(date, type) {\n this.$emit('select', date, type);\n },\n handleSelect: function handleSelect(date, type) {\n if (type === 'date') {\n this.openTimePanel();\n }\n\n var datetime = assignTime(date, getValidDate(this.value, this.defaultValue));\n\n if (this.disabledTime(new Date(datetime))) {\n // set the time of defalutValue;\n datetime = assignTime(date, this.defaultValue);\n\n if (this.disabledTime(new Date(datetime))) {\n // if disabled don't emit date\n this.currentValue = datetime;\n return;\n }\n }\n\n this.emitDate(datetime, type);\n }\n },\n render: function render() {\n var h = arguments[0];\n var calendarProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(CalendarPanel.props)), {\n type: 'date',\n value: this.currentValue\n }),\n on: {\n select: this.handleSelect\n }\n };\n var timeProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(__vue_component__$b.props)), {\n showTimeHeader: true,\n value: this.currentValue\n }),\n on: {\n select: this.emitDate,\n clicktitle: this.closeTimePanel\n }\n };\n var prefixClass = this.prefixClass;\n return h(\"div\", [h(CalendarPanel, helper([{}, calendarProps])), this.timeVisible && h(__vue_component__$b, helper([{\n \"class\": \"\".concat(prefixClass, \"-calendar-time\")\n }, timeProps]))]);\n }\n};\n\nvar DatetimeRange = {\n name: 'DatetimeRange',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n emits: ['select', 'update:show-time-panel'],\n props: _objectSpread2({}, CalendarRange.props, {}, TimeRange.props, {\n showTimePanel: {\n type: Boolean,\n default: undefined\n }\n }),\n data: function data() {\n return {\n defaultTimeVisible: false,\n currentValue: this.value\n };\n },\n computed: {\n timeVisible: function timeVisible() {\n return typeof this.showTimePanel === 'boolean' ? this.showTimePanel : this.defaultTimeVisible;\n }\n },\n watch: {\n value: function value(val) {\n this.currentValue = val;\n }\n },\n methods: {\n closeTimePanel: function closeTimePanel() {\n this.defaultTimeVisible = false;\n this.$emit('update:show-time-panel', false);\n },\n openTimePanel: function openTimePanel() {\n this.defaultTimeVisible = true;\n this.$emit('update:show-time-panel', true);\n },\n emitDate: function emitDate(dates, type) {\n this.$emit('select', dates, type);\n },\n handleSelect: function handleSelect(dates, type) {\n var _this = this;\n\n if (type === 'date') {\n this.openTimePanel();\n }\n\n var defaultValues = Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue, this.defaultValue];\n var datetimes = dates.map(function (date, i) {\n var time = isValidRangeDate(_this.value) ? _this.value[i] : defaultValues[i];\n return assignTime(date, time);\n });\n\n if (datetimes[1].getTime() < datetimes[0].getTime()) {\n datetimes = [datetimes[0], datetimes[0]];\n }\n\n if (datetimes.some(this.disabledTime)) {\n datetimes = dates.map(function (date, i) {\n return assignTime(date, defaultValues[i]);\n });\n\n if (datetimes.some(this.disabledTime)) {\n this.currentValue = datetimes;\n return;\n }\n }\n\n this.emitDate(datetimes, type);\n }\n },\n render: function render() {\n var h = arguments[0];\n var calendarProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(CalendarRange.props)), {\n type: 'date',\n value: this.currentValue\n }),\n on: {\n select: this.handleSelect\n }\n };\n var timeProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(TimeRange.props)), {\n value: this.currentValue,\n showTimeHeader: true\n }),\n on: {\n select: this.emitDate,\n clicktitle: this.closeTimePanel\n }\n };\n var prefixClass = this.prefixClass;\n return h(\"div\", [h(CalendarRange, helper([{}, calendarProps])), this.timeVisible && h(TimeRange, helper([{\n \"class\": \"\".concat(prefixClass, \"-calendar-time\")\n }, timeProps]))]);\n }\n};\n\nvar componentMap = {\n default: CalendarPanel,\n time: __vue_component__$b,\n datetime: DatetimePanel\n};\nvar componentRangeMap = {\n default: CalendarRange,\n time: TimeRange,\n datetime: DatetimeRange\n};\nvar DatePicker = {\n name: 'DatePicker',\n provide: function provide() {\n var _this = this;\n\n return {\n // make locale reactive\n getLocale: function getLocale() {\n return _this.locale;\n },\n getWeek: this.getWeek,\n prefixClass: this.prefixClass,\n dispatchDatePicker: this.$emit.bind(this)\n };\n },\n props: _objectSpread2({}, DatetimePanel.props, {\n value: {},\n valueType: {\n type: String,\n default: 'date' // date, format, timestamp, or token like 'YYYY-MM-DD'\n\n },\n type: {\n type: String,\n // ['date', 'datetime', 'time', 'year', 'month', 'week']\n default: 'date'\n },\n format: {\n type: String\n },\n formatter: {\n type: Object\n },\n range: {\n type: Boolean,\n default: false\n },\n multiple: {\n type: Boolean,\n default: false\n },\n rangeSeparator: {\n type: String\n },\n lang: {\n type: [String, Object]\n },\n placeholder: {\n type: String,\n default: ''\n },\n editable: {\n type: Boolean,\n default: true\n },\n disabled: {\n type: Boolean,\n default: false\n },\n clearable: {\n type: Boolean,\n default: true\n },\n prefixClass: {\n type: String,\n default: 'mx'\n },\n inputClass: {},\n inputAttr: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n appendToBody: {\n type: Boolean,\n default: true\n },\n open: {\n type: Boolean,\n default: undefined\n },\n popupClass: {},\n popupStyle: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n inline: {\n type: Boolean,\n default: false\n },\n confirm: {\n type: Boolean,\n default: false\n },\n confirmText: {\n type: String,\n default: 'OK'\n },\n renderInputText: {\n type: Function\n },\n shortcuts: {\n type: Array,\n validator: function validator(value) {\n return Array.isArray(value) && value.every(function (v) {\n return isObject(v) && typeof v.text === 'string' && typeof v.onClick === 'function';\n });\n },\n default: function _default() {\n return [];\n }\n }\n }),\n data: function data() {\n return {\n // cache the innervalue, wait to confirm\n currentValue: null,\n userInput: null,\n defaultOpen: false,\n mouseInInput: false\n };\n },\n computed: {\n popupVisible: function popupVisible() {\n return !this.disabled && (typeof this.open === 'boolean' ? this.open : this.defaultOpen);\n },\n innerRangeSeparator: function innerRangeSeparator() {\n return this.rangeSeparator || (this.multiple ? ',' : ' ~ ');\n },\n innerFormat: function innerFormat() {\n var map = {\n date: 'YYYY-MM-DD',\n datetime: 'YYYY-MM-DD HH:mm:ss',\n year: 'YYYY',\n month: 'YYYY-MM',\n time: 'HH:mm:ss',\n week: 'w'\n };\n return this.format || map[this.type] || map.date;\n },\n innerValue: function innerValue() {\n var value = this.value;\n\n if (this.validMultipleType) {\n value = Array.isArray(value) ? value : [];\n return value.map(this.value2date);\n }\n\n if (this.range) {\n value = Array.isArray(value) ? value.slice(0, 2) : [null, null];\n return value.map(this.value2date);\n }\n\n return this.value2date(value);\n },\n text: function text() {\n var _this2 = this;\n\n if (this.userInput !== null) {\n return this.userInput;\n }\n\n if (typeof this.renderInputText === 'function') {\n return this.renderInputText(this.innerValue);\n }\n\n if (!this.isValidValue(this.innerValue)) {\n return '';\n }\n\n if (Array.isArray(this.innerValue)) {\n return this.innerValue.map(function (v) {\n return _this2.formatDate(v);\n }).join(this.innerRangeSeparator);\n }\n\n return this.formatDate(this.innerValue);\n },\n showClearIcon: function showClearIcon() {\n return !this.disabled && this.clearable && this.text && this.mouseInInput;\n },\n locale: function locale() {\n if (isObject(this.lang)) {\n return mergeDeep(getLocale(), this.lang);\n }\n\n return getLocale(this.lang);\n },\n validMultipleType: function validMultipleType() {\n var types = ['date', 'month', 'year'];\n return this.multiple && !this.range && types.indexOf(this.type) !== -1;\n }\n },\n watch: {\n innerValue: {\n immediate: true,\n handler: function handler(val) {\n this.currentValue = val;\n }\n },\n popupVisible: {\n handler: function handler(val) {\n if (val) {\n this.currentValue = this.innerValue;\n }\n }\n }\n },\n created: function created() {\n if (_typeof(this.format) === 'object') {\n console.warn(\"[vue2-datepicker]: The prop `format` don't support Object any more. You can use the new prop `formatter` to replace it\");\n }\n },\n methods: {\n handleMouseEnter: function handleMouseEnter() {\n this.mouseInInput = true;\n },\n handleMouseLeave: function handleMouseLeave() {\n this.mouseInInput = false;\n },\n handleClickOutSide: function handleClickOutSide(evt) {\n var target = evt.target;\n\n if (!this.$el.contains(target)) {\n this.closePopup();\n }\n },\n getFormatter: function getFormatter(key) {\n return isObject(this.formatter) && this.formatter[key] || isObject(this.format) && this.format[key];\n },\n getWeek: function getWeek$1(date, options) {\n if (typeof this.getFormatter('getWeek') === 'function') {\n return this.getFormatter('getWeek')(date, options);\n }\n\n return getWeek(date, options);\n },\n parseDate: function parseDate(value, fmt) {\n fmt = fmt || this.innerFormat;\n\n if (typeof this.getFormatter('parse') === 'function') {\n return this.getFormatter('parse')(value, fmt);\n }\n\n var backupDate = new Date();\n return parse(value, fmt, {\n locale: this.locale.formatLocale,\n backupDate: backupDate\n });\n },\n formatDate: function formatDate(date, fmt) {\n fmt = fmt || this.innerFormat;\n\n if (typeof this.getFormatter('stringify') === 'function') {\n return this.getFormatter('stringify')(date, fmt);\n }\n\n return format(date, fmt, {\n locale: this.locale.formatLocale\n });\n },\n // transform the outer value to inner date\n value2date: function value2date(value) {\n switch (this.valueType) {\n case 'date':\n return value instanceof Date ? new Date(value.getTime()) : new Date(NaN);\n\n case 'timestamp':\n return typeof value === 'number' ? new Date(value) : new Date(NaN);\n\n case 'format':\n return typeof value === 'string' ? this.parseDate(value) : new Date(NaN);\n\n default:\n return typeof value === 'string' ? this.parseDate(value, this.valueType) : new Date(NaN);\n }\n },\n // transform the inner date to outer value\n date2value: function date2value(date) {\n if (!isValidDate(date)) return null;\n\n switch (this.valueType) {\n case 'date':\n return date;\n\n case 'timestamp':\n return date.getTime();\n\n case 'format':\n return this.formatDate(date);\n\n default:\n return this.formatDate(date, this.valueType);\n }\n },\n emitValue: function emitValue(date, type) {\n var close = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // fix IE11/10 trigger input event when input is focused. (placeholder !== '')\n this.userInput = null;\n var value = Array.isArray(date) ? date.map(this.date2value) : this.date2value(date);\n this.$emit('input', value);\n this.$emit('change', value, type);\n\n if (close) {\n this.closePopup();\n }\n\n return value;\n },\n isValidValue: function isValidValue(value) {\n if (this.validMultipleType) {\n return isValidDates(value);\n }\n\n if (this.range) {\n return isValidRangeDate(value);\n }\n\n return isValidDate(value);\n },\n isValidValueAndNotDisabled: function isValidValueAndNotDisabled(value) {\n if (!this.isValidValue(value)) {\n return false;\n }\n\n var disabledDate = typeof this.disabledDate === 'function' ? this.disabledDate : function () {\n return false;\n };\n var disabledTime = typeof this.disabledTime === 'function' ? this.disabledTime : function () {\n return false;\n };\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n return value.every(function (v) {\n return !disabledDate(v) && !disabledTime(v);\n });\n },\n handleMultipleDates: function handleMultipleDates(date, dates) {\n if (this.validMultipleType && dates) {\n var nextDates = dates.filter(function (v) {\n return v.getTime() !== date.getTime();\n });\n\n if (nextDates.length === dates.length) {\n nextDates.push(date);\n }\n\n return nextDates;\n }\n\n return date;\n },\n handleSelectDate: function handleSelectDate(val, type, dates) {\n val = this.handleMultipleDates(val, dates);\n\n if (this.confirm) {\n this.currentValue = val;\n } else {\n this.emitValue(val, type, // this.type === 'datetime', click the time should close popup\n !this.validMultipleType && (type === this.type || type === 'time'));\n }\n },\n clear: function clear() {\n this.emitValue(this.range ? [null, null] : null);\n this.$emit('clear');\n },\n handleClear: function handleClear(evt) {\n evt.stopPropagation();\n this.clear();\n },\n handleConfirmDate: function handleConfirmDate() {\n var value = this.emitValue(this.currentValue);\n this.$emit('confirm', value);\n },\n handleSelectShortcut: function handleSelectShortcut(evt) {\n var index = evt.currentTarget.getAttribute('data-index');\n var item = this.shortcuts[parseInt(index, 10)];\n\n if (isObject(item) && typeof item.onClick === 'function') {\n var date = item.onClick(this);\n\n if (date) {\n this.emitValue(date);\n }\n }\n },\n openPopup: function openPopup(evt) {\n if (this.popupVisible || this.disabled) return;\n this.defaultOpen = true;\n this.$emit('open', evt);\n this.$emit('update:open', true);\n },\n closePopup: function closePopup() {\n if (!this.popupVisible) return;\n this.defaultOpen = false;\n this.$emit('close');\n this.$emit('update:open', false);\n },\n blur: function blur() {\n // when use slot input\n if (this.$refs.input) {\n this.$refs.input.blur();\n }\n },\n focus: function focus() {\n if (this.$refs.input) {\n this.$refs.input.focus();\n }\n },\n handleInputChange: function handleInputChange() {\n var _this3 = this;\n\n if (!this.editable || this.userInput === null) return;\n var text = this.userInput.trim();\n this.userInput = null;\n\n if (text === '') {\n this.clear();\n return;\n }\n\n var date;\n\n if (this.validMultipleType) {\n date = text.split(this.innerRangeSeparator).map(function (v) {\n return _this3.parseDate(v.trim());\n });\n } else if (this.range) {\n var arr = text.split(this.innerRangeSeparator);\n\n if (arr.length !== 2) {\n // Maybe the separator during the day is the same as the separator for the date\n // eg: 2019-10-09-2020-01-02\n arr = text.split(this.innerRangeSeparator.trim());\n }\n\n date = arr.map(function (v) {\n return _this3.parseDate(v.trim());\n });\n } else {\n date = this.parseDate(text);\n }\n\n if (this.isValidValueAndNotDisabled(date)) {\n this.emitValue(date);\n this.blur();\n } else {\n this.$emit('input-error', text);\n }\n },\n handleInputInput: function handleInputInput(evt) {\n // slot input v-model\n this.userInput = typeof evt === 'string' ? evt : evt.target.value;\n },\n handleInputKeydown: function handleInputKeydown(evt) {\n var keyCode = evt.keyCode; // Tab 9 or Enter 13\n\n if (keyCode === 9) {\n this.closePopup();\n } else if (keyCode === 13) {\n this.handleInputChange();\n }\n },\n handleInputBlur: function handleInputBlur(evt) {\n // tab close\n this.$emit('blur', evt);\n },\n handleInputFocus: function handleInputFocus(evt) {\n this.openPopup(evt);\n this.$emit('focus', evt);\n },\n hasSlot: function hasSlot(name) {\n return !!(this.$slots[name] || this.$scopedSlots[name]);\n },\n renderSlot: function renderSlot(name, fallback, props) {\n var slotFn = this.$scopedSlots[name];\n\n if (slotFn) {\n return slotFn(props) || fallback;\n }\n\n return this.$slots[name] || fallback;\n },\n renderInput: function renderInput() {\n var h = this.$createElement;\n var prefixClass = this.prefixClass;\n\n var props = _objectSpread2({\n name: 'date',\n type: 'text',\n autocomplete: 'off',\n value: this.text,\n class: this.inputClass || \"\".concat(this.prefixClass, \"-input\"),\n readonly: !this.editable,\n disabled: this.disabled,\n placeholder: this.placeholder\n }, this.inputAttr);\n\n var value = props.value,\n className = props.class,\n attrs = _objectWithoutProperties(props, [\"value\", \"class\"]);\n\n var events = {\n keydown: this.handleInputKeydown,\n focus: this.handleInputFocus,\n blur: this.handleInputBlur,\n input: this.handleInputInput,\n change: this.handleInputChange\n };\n var input = this.renderSlot('input', h(\"input\", {\n \"domProps\": {\n \"value\": value\n },\n \"class\": className,\n \"attrs\": _objectSpread2({}, attrs),\n \"on\": _objectSpread2({}, events),\n \"ref\": \"input\"\n }), {\n props: props,\n events: events\n });\n var calendarIcon = this.type === 'time' ? h(__vue_component__$2) : h(__vue_component__$1); // remove touchstart event to avoid opens the popup while scrolling in mobile #469\n\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-input-wrapper\"),\n \"on\": {\n \"mouseenter\": this.handleMouseEnter,\n \"mouseleave\": this.handleMouseLeave,\n \"click\": this.openPopup\n },\n \"ref\": \"inputWrapper\"\n }, [input, this.showClearIcon ? h(\"i\", {\n \"class\": \"\".concat(prefixClass, \"-icon-clear\"),\n \"on\": {\n \"click\": this.handleClear\n }\n }, [this.renderSlot('icon-clear', h(__vue_component__$3))]) : h(\"i\", {\n \"class\": \"\".concat(prefixClass, \"-icon-calendar\")\n }, [this.renderSlot('icon-calendar', calendarIcon)])]);\n },\n renderContent: function renderContent() {\n var h = this.$createElement;\n var map = this.range ? componentRangeMap : componentMap;\n var Component = map[this.type] || map.default;\n\n var props = _objectSpread2({}, pick(this.$props, Object.keys(Component.props)), {\n value: this.currentValue\n });\n\n var on = _objectSpread2({}, pick(this.$listeners, Component.emits || []), {\n select: this.handleSelectDate\n });\n\n var content = h(Component, helper([{}, {\n props: props,\n on: on,\n ref: 'picker'\n }]));\n return h(\"div\", {\n \"class\": \"\".concat(this.prefixClass, \"-datepicker-body\")\n }, [this.renderSlot('content', content, {\n value: this.currentValue,\n emit: this.handleSelectDate\n })]);\n },\n renderSidebar: function renderSidebar() {\n var _this4 = this;\n\n var h = this.$createElement;\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-sidebar\")\n }, [this.renderSlot('sidebar', null, {\n value: this.currentValue,\n emit: this.handleSelectDate\n }), this.shortcuts.map(function (v, i) {\n return h(\"button\", {\n \"key\": i,\n \"attrs\": {\n \"data-index\": i,\n \"type\": \"button\"\n },\n \"class\": \"\".concat(prefixClass, \"-btn \").concat(prefixClass, \"-btn-text \").concat(prefixClass, \"-btn-shortcut\"),\n \"on\": {\n \"click\": _this4.handleSelectShortcut\n }\n }, [v.text]);\n })]);\n },\n renderHeader: function renderHeader() {\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": \"\".concat(this.prefixClass, \"-datepicker-header\")\n }, [this.renderSlot('header', null, {\n value: this.currentValue,\n emit: this.handleSelectDate\n })]);\n },\n renderFooter: function renderFooter() {\n var h = this.$createElement;\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-footer\")\n }, [this.renderSlot('footer', null, {\n value: this.currentValue,\n emit: this.handleSelectDate\n }), this.confirm ? h(\"button\", {\n \"attrs\": {\n \"type\": \"button\"\n },\n \"class\": \"\".concat(prefixClass, \"-btn \").concat(prefixClass, \"-datepicker-btn-confirm\"),\n \"on\": {\n \"click\": this.handleConfirmDate\n }\n }, [this.confirmText]) : null]);\n }\n },\n render: function render() {\n var _class;\n\n var h = arguments[0];\n var prefixClass = this.prefixClass,\n inline = this.inline,\n disabled = this.disabled;\n var sidedar = this.hasSlot('sidebar') || this.shortcuts.length ? this.renderSidebar() : null;\n var content = h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-content\")\n }, [this.hasSlot('header') ? this.renderHeader() : null, this.renderContent(), this.hasSlot('footer') || this.confirm ? this.renderFooter() : null]);\n return h(\"div\", {\n \"class\": (_class = {}, _defineProperty(_class, \"\".concat(prefixClass, \"-datepicker\"), true), _defineProperty(_class, \"\".concat(prefixClass, \"-datepicker-range\"), this.range), _defineProperty(_class, \"\".concat(prefixClass, \"-datepicker-inline\"), inline), _defineProperty(_class, \"disabled\", disabled), _class)\n }, [!inline ? this.renderInput() : null, !inline ? h(__vue_component__, {\n \"ref\": \"popup\",\n \"class\": this.popupClass,\n \"style\": this.popupStyle,\n \"attrs\": {\n \"visible\": this.popupVisible,\n \"appendToBody\": this.appendToBody\n },\n \"on\": {\n \"clickoutside\": this.handleClickOutSide\n }\n }, [sidedar, content]) : h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-main\")\n }, [sidedar, content])]);\n }\n};\n\nDatePicker.locale = locale;\n\nDatePicker.install = function install(Vue) {\n Vue.component(DatePicker.name, DatePicker);\n};\n\nif (typeof window !== 'undefined' && window.Vue) {\n DatePicker.install(window.Vue);\n}\n\n_extends(DatePicker, {\n CalendarPanel: CalendarPanel,\n CalendarRange: CalendarRange,\n TimePanel: __vue_component__$b,\n TimeRange: TimeRange,\n DatetimePanel: DatetimePanel,\n DatetimeRange: DatetimeRange\n});\n\nexport default DatePicker;\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\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 if (this.weeks) str += this.weeks + \"W\";\n if (this.days) str += this.days + \"D\";\n\n if (this.hours || this.minutes || this.seconds) {\n str += \"T\";\n if (this.hours) str += this.hours + \"H\";\n if (this.minutes) str += this.minutes + \"M\";\n if (this.seconds) str += this.seconds + \"S\";\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 * 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 * @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[19] && aValue[19] === '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 {Object} aData Time initialization\n * @param {Number=} aData.year The year for this date\n * @param {Number=} aData.month The month for this date\n * @param {Number=} aData.day The day for this date\n * @param {Number=} aData.hour The hour for this date\n * @param {Number=} aData.minute The minute for this date\n * @param {Number=} aData.second The second for this date\n * @param {Boolean=} aData.isDate If true, the instance represents a date\n * (as opposed to a date-time)\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 {Object} data Time initialization\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 {Boolean=} data.isDate If true, the instance represents a date (as\n * opposed to a date-time)\n * @param {Timezone} zone timezone this position occurs in\n */\n constructor(data, zone) {\n this.wrappedJSObject = this;\n let time = this._time = Object.create(null);\n\n /* time defaults */\n time.year = 0;\n time.month = 1;\n time.day = 1;\n time.hour = 0;\n time.minute = 0;\n time.second = 0;\n 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 * 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 {Object} aData Time initialization\n * @param {Number=} aData.year The year for this date\n * @param {Number=} aData.month The month for this date\n * @param {Number=} aData.day The day for this date\n * @param {Number=} aData.hour The hour for this date\n * @param {Number=} aData.minute The minute for this date\n * @param {Number=} aData.second The second for this date\n * @param {Boolean=} aData.isDate If true, the instance represents a date\n * (as opposed to a date-time)\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.\n *\n * @param {Duration} aOther The instance to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(other) {\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 * Compares only the date part of this instance with another one.\n *\n * @param {Duration} 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$1.icalendar.value['date-time'].toICAL(string);\n } else {\n return design$1.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(function setupNormalizeAttributes() {\n // This needs to run before any instances are created!\n function defineAttr(attr) {\n Object.defineProperty(Time.prototype, attr, {\n get: function getTimeAttr() {\n if (this._pendingNormalization) {\n this._normalize();\n this._pendingNormalization = false;\n }\n\n return this._time[attr];\n },\n set: function setTimeAttr(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 }\n\n defineAttr(\"year\");\n defineAttr(\"month\");\n defineAttr(\"day\");\n defineAttr(\"hour\");\n defineAttr(\"minute\");\n defineAttr(\"second\");\n defineAttr(\"isDate\");\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 * 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$1.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 lastParamIndex = parsedParams[1].length + 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$1.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$1.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 {Object} key/value pairs\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\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\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 * 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 updateTimezones: updateTimezones,\n isStrictlyNaN: isStrictlyNaN,\n strictParseInt: strictParseInt,\n formatClassType: formatClassType,\n unescapedIndexOf: unescapedIndexOf,\n binsearchInsert: binsearchInsert,\n clone: clone,\n foldline: foldline,\n pad2: pad2,\n trunc: trunc,\n extend: extend\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 * 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$1.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 * 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 {ICAL.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$1.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$1.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 * 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 // If the BYYEARDAY appares, no other date rule part may appear\n if (\"BYYEARDAY\" in parts) {\n if (\"BYMONTH\" in parts || \"BYWEEKNO\" in parts ||\n \"BYMONTHDAY\" in parts || \"BYDAY\" 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 this._nextByYearDay();\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 Error(\"No possible occurrences\");\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 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 break;\n case \"YEARLY\":\n this.next_year();\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_index == this.days.length) {\n this.days_index = 0;\n do {\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 } while (this.days.length == 0);\n }\n\n this._nextByYearDay();\n\n return 1;\n }\n\n _nextByYearDay() {\n let doy = this.days[this.days_index];\n let year = this.last.year;\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\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 {\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 * 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$1.icalendar.value['date-time'].fromICAL(value);\n } else {\n dict.until = design$1.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 * 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 * 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 * 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: icalValues.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 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 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 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};\nvar design$1 = design;\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 * 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$1.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$1.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$1.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$1.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$1.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$1.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 * 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\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 return parentDesign || design$1.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 * 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 * 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 compare = this.exDate.compare(this.last);\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 this.exDateInc = binsearchInsert(\n this.exDates,\n this.last,\n (a, b) => a.compare(b)\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 * 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 * 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 * 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: design$1,\n helpers\n};\n\nexport { ICALmodule as default };\n","import ICAL from \"ical.js\";\nfunction getSortedTimezoneList(timezoneList = [], additionalTimezones = [], globalTimezoneName = \"Global\") {\n const sortedByContinent = /* @__PURE__ */ new Map();\n for (const timezoneId of timezoneList) {\n const components = timezoneId.split(\"/\");\n let [continent, name] = [components.shift(), components.join(\"/\")];\n if (!name) {\n name = continent;\n continent = globalTimezoneName;\n }\n if (!sortedByContinent.has(continent)) {\n sortedByContinent.set(continent, {\n continent,\n regions: []\n });\n }\n sortedByContinent.get(continent).regions.push({\n label: getReadableTimezoneName(name),\n cities: [],\n timezoneId\n });\n }\n for (const { continent, label, timezoneId } of additionalTimezones) {\n if (!sortedByContinent.has(continent)) {\n sortedByContinent.set(continent, {\n continent,\n regions: []\n });\n }\n sortedByContinent.get(continent).regions.push({\n label,\n cities: [],\n timezoneId\n });\n }\n const sortedList = [...sortedByContinent.values()].sort((a, b) => a.continent.localeCompare(b.continent));\n for (const { regions } of sortedList) {\n regions.sort((a, b) => a.label.localeCompare(b.label));\n }\n return sortedList;\n}\nfunction getReadableTimezoneName(timezoneId) {\n return timezoneId.split(\"_\").join(\" \").replace(\"St \", \"St. \").split(\"/\").join(\" - \");\n}\nfunction isOlsonTimezone(tzName) {\n const hasSlash = tzName.includes(\"/\");\n const hasSpace = tzName.includes(\" \");\n const startsWithETC = tzName.startsWith(\"Etc\");\n const startsWithUS = tzName.startsWith(\"US/\");\n return hasSlash && !hasSpace && !startsWithETC && !startsWithUS;\n}\nclass Timezone {\n /**\n * Id of the timezone.\n */\n _timezoneId;\n /**\n * ICS representation of the timezone\n */\n _ics;\n _timezone;\n _initialized;\n constructor(timezoneId, ics) {\n if (timezoneId instanceof ICAL.Timezone) {\n this._timezone = timezoneId;\n this._initialized = true;\n } else if (timezoneId instanceof ICAL.Component) {\n this._timezone = new ICAL.Timezone(timezoneId);\n this._initialized = true;\n } else {\n this._timezoneId = timezoneId;\n this._ics = ics;\n this._initialized = false;\n }\n }\n /**\n * Get the timezone id\n */\n get timezoneId() {\n if (this._initialized) {\n return this._timezone.tzid;\n }\n return this._timezoneId;\n }\n /**\n * Get the UTC Offset for a given date in this timezone.\n *\n * @param year - Year of the date\n * @param month - Month of the date (1-based)\n * @param day - Day of the date\n * @param hour - Hour of the date\n * @param minute - Minute of the date\n * @param second - Second of the date\n */\n offsetForArray(year, month, day, hour, minute, second) {\n const time = new ICAL.Time({\n year,\n month,\n day,\n hour,\n minute,\n second,\n isDate: false\n });\n return this.timezone.utcOffset(time);\n }\n /**\n * Converts a timestamp to an array of year, month, day, hour, minute, second.\n *\n * @param {number} ms Timestamp in milliseconds\n * @return {number[]}\n */\n timestampToArray(ms) {\n const time = ICAL.Time.fromData({\n year: 1970,\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0\n });\n time.fromUnixTime(Math.floor(ms / 1e3));\n const local = time.convertToZone(this.timezone);\n return [\n local.year,\n local.month,\n // THIS is 1-based !\n local.day,\n local.hour,\n local.minute,\n local.second\n ];\n }\n toICALTimezone() {\n return this.timezone;\n }\n /**\n * Returns the corresponding ICAL.\n */\n toICALJs() {\n return this.timezone.component;\n }\n /**\n * Initializes the inner ICAL.Timezone component if not already done.\n */\n get timezone() {\n if (!this._initialized) {\n const jCal = ICAL.parse(this._ics);\n const iCalComponent = new ICAL.Component(jCal);\n this._timezone = new ICAL.Timezone(iCalComponent);\n this._initialized = true;\n }\n return this._timezone;\n }\n static get utc() {\n return new Timezone(ICAL.Timezone.utcTimezone);\n }\n static get floating() {\n return new Timezone(ICAL.Timezone.localTimezone);\n }\n}\nconst version = \"2.2024a\";\nconst aliases = {\n \"AUS Central Standard Time\": {\n aliasTo: \"Australia/Darwin\"\n },\n \"AUS Eastern Standard Time\": {\n aliasTo: \"Australia/Sydney\"\n },\n \"Afghanistan Standard Time\": {\n aliasTo: \"Asia/Kabul\"\n },\n \"Africa/Asmera\": {\n aliasTo: \"Africa/Asmara\"\n },\n \"Africa/Timbuktu\": {\n aliasTo: \"Africa/Bamako\"\n },\n \"Alaskan Standard Time\": {\n aliasTo: \"America/Anchorage\"\n },\n \"America/Argentina/ComodRivadavia\": {\n aliasTo: \"America/Argentina/Catamarca\"\n },\n \"America/Buenos_Aires\": {\n aliasTo: \"America/Argentina/Buenos_Aires\"\n },\n \"America/Louisville\": {\n aliasTo: \"America/Kentucky/Louisville\"\n },\n \"America/Montreal\": {\n aliasTo: \"America/Toronto\"\n },\n \"America/Santa_Isabel\": {\n aliasTo: \"America/Tijuana\"\n },\n \"Arab Standard Time\": {\n aliasTo: \"Asia/Riyadh\"\n },\n \"Arabian Standard Time\": {\n aliasTo: \"Asia/Dubai\"\n },\n \"Arabic Standard Time\": {\n aliasTo: \"Asia/Baghdad\"\n },\n \"Argentina Standard Time\": {\n aliasTo: \"America/Argentina/Buenos_Aires\"\n },\n \"Asia/Calcutta\": {\n aliasTo: \"Asia/Kolkata\"\n },\n \"Asia/Katmandu\": {\n aliasTo: \"Asia/Kathmandu\"\n },\n \"Asia/Rangoon\": {\n aliasTo: \"Asia/Yangon\"\n },\n \"Asia/Saigon\": {\n aliasTo: \"Asia/Ho_Chi_Minh\"\n },\n \"Atlantic Standard Time\": {\n aliasTo: \"America/Halifax\"\n },\n \"Atlantic/Faeroe\": {\n aliasTo: \"Atlantic/Faroe\"\n },\n \"Atlantic/Jan_Mayen\": {\n aliasTo: \"Europe/Oslo\"\n },\n \"Azerbaijan Standard Time\": {\n aliasTo: \"Asia/Baku\"\n },\n \"Azores Standard Time\": {\n aliasTo: \"Atlantic/Azores\"\n },\n \"Bahia Standard Time\": {\n aliasTo: \"America/Bahia\"\n },\n \"Bangladesh Standard Time\": {\n aliasTo: \"Asia/Dhaka\"\n },\n \"Belarus Standard Time\": {\n aliasTo: \"Europe/Minsk\"\n },\n \"Canada Central Standard Time\": {\n aliasTo: \"America/Regina\"\n },\n \"Cape Verde Standard Time\": {\n aliasTo: \"Atlantic/Cape_Verde\"\n },\n \"Caucasus Standard Time\": {\n aliasTo: \"Asia/Yerevan\"\n },\n \"Cen. Australia Standard Time\": {\n aliasTo: \"Australia/Adelaide\"\n },\n \"Central America Standard Time\": {\n aliasTo: \"America/Guatemala\"\n },\n \"Central Asia Standard Time\": {\n aliasTo: \"Asia/Almaty\"\n },\n \"Central Brazilian Standard Time\": {\n aliasTo: \"America/Cuiaba\"\n },\n \"Central Europe Standard Time\": {\n aliasTo: \"Europe/Budapest\"\n },\n \"Central European Standard Time\": {\n aliasTo: \"Europe/Warsaw\"\n },\n \"Central Pacific Standard Time\": {\n aliasTo: \"Pacific/Guadalcanal\"\n },\n \"Central Standard Time\": {\n aliasTo: \"America/Chicago\"\n },\n \"Central Standard Time (Mexico)\": {\n aliasTo: \"America/Mexico_City\"\n },\n \"China Standard Time\": {\n aliasTo: \"Asia/Shanghai\"\n },\n \"E. Africa Standard Time\": {\n aliasTo: \"Africa/Nairobi\"\n },\n \"E. Australia Standard Time\": {\n aliasTo: \"Australia/Brisbane\"\n },\n \"E. South America Standard Time\": {\n aliasTo: \"America/Sao_Paulo\"\n },\n \"Eastern Standard Time\": {\n aliasTo: \"America/New_York\"\n },\n \"Egypt Standard Time\": {\n aliasTo: \"Africa/Cairo\"\n },\n \"Ekaterinburg Standard Time\": {\n aliasTo: \"Asia/Yekaterinburg\"\n },\n \"Etc/GMT\": {\n aliasTo: \"UTC\"\n },\n \"Etc/GMT+0\": {\n aliasTo: \"UTC\"\n },\n \"Etc/UCT\": {\n aliasTo: \"UTC\"\n },\n \"Etc/UTC\": {\n aliasTo: \"UTC\"\n },\n \"Etc/Unversal\": {\n aliasTo: \"UTC\"\n },\n \"Etc/Zulu\": {\n aliasTo: \"UTC\"\n },\n \"Europe/Belfast\": {\n aliasTo: \"Europe/London\"\n },\n \"FLE Standard Time\": {\n aliasTo: \"Europe/Kiev\"\n },\n \"Fiji Standard Time\": {\n aliasTo: \"Pacific/Fiji\"\n },\n GMT: {\n aliasTo: \"UTC\"\n },\n \"GMT Standard Time\": {\n aliasTo: \"Europe/London\"\n },\n \"GMT+0\": {\n aliasTo: \"UTC\"\n },\n GMT0: {\n aliasTo: \"UTC\"\n },\n \"GTB Standard Time\": {\n aliasTo: \"Europe/Bucharest\"\n },\n \"Georgian Standard Time\": {\n aliasTo: \"Asia/Tbilisi\"\n },\n \"Greenland Standard Time\": {\n aliasTo: \"America/Godthab\"\n },\n Greenwich: {\n aliasTo: \"UTC\"\n },\n \"Greenwich Standard Time\": {\n aliasTo: \"Atlantic/Reykjavik\"\n },\n \"Hawaiian Standard Time\": {\n aliasTo: \"Pacific/Honolulu\"\n },\n \"India Standard Time\": {\n aliasTo: \"Asia/Calcutta\"\n },\n \"Iran Standard Time\": {\n aliasTo: \"Asia/Tehran\"\n },\n \"Israel Standard Time\": {\n aliasTo: \"Asia/Jerusalem\"\n },\n \"Jordan Standard Time\": {\n aliasTo: \"Asia/Amman\"\n },\n \"Kaliningrad Standard Time\": {\n aliasTo: \"Europe/Kaliningrad\"\n },\n \"Korea Standard Time\": {\n aliasTo: \"Asia/Seoul\"\n },\n \"Libya Standard Time\": {\n aliasTo: \"Africa/Tripoli\"\n },\n \"Line Islands Standard Time\": {\n aliasTo: \"Pacific/Kiritimati\"\n },\n \"Magadan Standard Time\": {\n aliasTo: \"Asia/Magadan\"\n },\n \"Mauritius Standard Time\": {\n aliasTo: \"Indian/Mauritius\"\n },\n \"Middle East Standard Time\": {\n aliasTo: \"Asia/Beirut\"\n },\n \"Montevideo Standard Time\": {\n aliasTo: \"America/Montevideo\"\n },\n \"Morocco Standard Time\": {\n aliasTo: \"Africa/Casablanca\"\n },\n \"Mountain Standard Time\": {\n aliasTo: \"America/Denver\"\n },\n \"Mountain Standard Time (Mexico)\": {\n aliasTo: \"America/Chihuahua\"\n },\n \"Myanmar Standard Time\": {\n aliasTo: \"Asia/Rangoon\"\n },\n \"N. Central Asia Standard Time\": {\n aliasTo: \"Asia/Novosibirsk\"\n },\n \"Namibia Standard Time\": {\n aliasTo: \"Africa/Windhoek\"\n },\n \"Nepal Standard Time\": {\n aliasTo: \"Asia/Katmandu\"\n },\n \"New Zealand Standard Time\": {\n aliasTo: \"Pacific/Auckland\"\n },\n \"Newfoundland Standard Time\": {\n aliasTo: \"America/St_Johns\"\n },\n \"North Asia East Standard Time\": {\n aliasTo: \"Asia/Irkutsk\"\n },\n \"North Asia Standard Time\": {\n aliasTo: \"Asia/Krasnoyarsk\"\n },\n \"Pacific SA Standard Time\": {\n aliasTo: \"America/Santiago\"\n },\n \"Pacific Standard Time\": {\n aliasTo: \"America/Los_Angeles\"\n },\n \"Pacific Standard Time (Mexico)\": {\n aliasTo: \"America/Santa_Isabel\"\n },\n \"Pacific/Johnston\": {\n aliasTo: \"Pacific/Honolulu\"\n },\n \"Pakistan Standard Time\": {\n aliasTo: \"Asia/Karachi\"\n },\n \"Paraguay Standard Time\": {\n aliasTo: \"America/Asuncion\"\n },\n \"Romance Standard Time\": {\n aliasTo: \"Europe/Paris\"\n },\n \"Russia Time Zone 10\": {\n aliasTo: \"Asia/Srednekolymsk\"\n },\n \"Russia Time Zone 11\": {\n aliasTo: \"Asia/Kamchatka\"\n },\n \"Russia Time Zone 3\": {\n aliasTo: \"Europe/Samara\"\n },\n \"Russian Standard Time\": {\n aliasTo: \"Europe/Moscow\"\n },\n \"SA Eastern Standard Time\": {\n aliasTo: \"America/Cayenne\"\n },\n \"SA Pacific Standard Time\": {\n aliasTo: \"America/Bogota\"\n },\n \"SA Western Standard Time\": {\n aliasTo: \"America/La_Paz\"\n },\n \"SE Asia Standard Time\": {\n aliasTo: \"Asia/Bangkok\"\n },\n \"Samoa Standard Time\": {\n aliasTo: \"Pacific/Apia\"\n },\n \"Singapore Standard Time\": {\n aliasTo: \"Asia/Singapore\"\n },\n \"South Africa Standard Time\": {\n aliasTo: \"Africa/Johannesburg\"\n },\n \"Sri Lanka Standard Time\": {\n aliasTo: \"Asia/Colombo\"\n },\n \"Syria Standard Time\": {\n aliasTo: \"Asia/Damascus\"\n },\n \"Taipei Standard Time\": {\n aliasTo: \"Asia/Taipei\"\n },\n \"Tasmania Standard Time\": {\n aliasTo: \"Australia/Hobart\"\n },\n \"Tokyo Standard Time\": {\n aliasTo: \"Asia/Tokyo\"\n },\n \"Tonga Standard Time\": {\n aliasTo: \"Pacific/Tongatapu\"\n },\n \"Turkey Standard Time\": {\n aliasTo: \"Europe/Istanbul\"\n },\n UCT: {\n aliasTo: \"UTC\"\n },\n \"US Eastern Standard Time\": {\n aliasTo: \"America/Indiana/Indianapolis\"\n },\n \"US Mountain Standard Time\": {\n aliasTo: \"America/Phoenix\"\n },\n \"US/Central\": {\n aliasTo: \"America/Chicago\"\n },\n \"US/Eastern\": {\n aliasTo: \"America/New_York\"\n },\n \"US/Mountain\": {\n aliasTo: \"America/Denver\"\n },\n \"US/Pacific\": {\n aliasTo: \"America/Los_Angeles\"\n },\n \"US/Pacific-New\": {\n aliasTo: \"America/Los_Angeles\"\n },\n \"Ulaanbaatar Standard Time\": {\n aliasTo: \"Asia/Ulaanbaatar\"\n },\n Universal: {\n aliasTo: \"UTC\"\n },\n \"Venezuela Standard Time\": {\n aliasTo: \"America/Caracas\"\n },\n \"Vladivostok Standard Time\": {\n aliasTo: \"Asia/Vladivostok\"\n },\n \"W. Australia Standard Time\": {\n aliasTo: \"Australia/Perth\"\n },\n \"W. Central Africa Standard Time\": {\n aliasTo: \"Africa/Lagos\"\n },\n \"W. Europe Standard Time\": {\n aliasTo: \"Europe/Berlin\"\n },\n \"West Asia Standard Time\": {\n aliasTo: \"Asia/Tashkent\"\n },\n \"West Pacific Standard Time\": {\n aliasTo: \"Pacific/Port_Moresby\"\n },\n \"Yakutsk Standard Time\": {\n aliasTo: \"Asia/Yakutsk\"\n },\n Z: {\n aliasTo: \"UTC\"\n },\n Zulu: {\n aliasTo: \"UTC\"\n },\n utc: {\n aliasTo: \"UTC\"\n }\n};\nconst zones = {\n \"Africa/Abidjan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0051900\",\n longitude: \"-0040200\"\n },\n \"Africa/Accra\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Addis_Ababa\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Algiers\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0364700\",\n longitude: \"+0030300\"\n },\n \"Africa/Asmara\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Asmera\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Bamako\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Bangui\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Banjul\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Bissau\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0115100\",\n longitude: \"-0153500\"\n },\n \"Africa/Blantyre\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Brazzaville\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Bujumbura\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Cairo\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700424T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1FR\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701030T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0300300\",\n longitude: \"+0311500\"\n },\n \"Africa/Casablanca\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:+01\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0333900\",\n longitude: \"-0073500\"\n },\n \"Africa/Ceuta\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0355300\",\n longitude: \"-0051900\"\n },\n \"Africa/Conakry\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Dakar\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Dar_es_Salaam\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Djibouti\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Douala\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/El_Aaiun\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:+01\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0270900\",\n longitude: \"-0131200\"\n },\n \"Africa/Freetown\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Gaborone\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Harare\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Johannesburg\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:SAST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0261500\",\n longitude: \"+0280000\"\n },\n \"Africa/Juba\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0045100\",\n longitude: \"+0313700\"\n },\n \"Africa/Kampala\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Khartoum\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0153600\",\n longitude: \"+0323200\"\n },\n \"Africa/Kigali\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Kinshasa\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Lagos\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0062700\",\n longitude: \"+0032400\"\n },\n \"Africa/Libreville\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Lome\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Luanda\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Lubumbashi\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Lusaka\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Malabo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Maputo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0255800\",\n longitude: \"+0323500\"\n },\n \"Africa/Maseru\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:SAST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Mbabane\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:SAST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Mogadishu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Monrovia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0061800\",\n longitude: \"-0104700\"\n },\n \"Africa/Nairobi\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0011700\",\n longitude: \"+0364900\"\n },\n \"Africa/Ndjamena\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0120700\",\n longitude: \"+0150300\"\n },\n \"Africa/Niamey\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Nouakchott\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Ouagadougou\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Porto-Novo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Sao_Tome\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0002000\",\n longitude: \"+0064400\"\n },\n \"Africa/Timbuktu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Tripoli\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0325400\",\n longitude: \"+0131100\"\n },\n \"Africa/Tunis\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0364800\",\n longitude: \"+0101100\"\n },\n \"Africa/Windhoek\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0223400\",\n longitude: \"+0170600\"\n },\n \"America/Adak\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:HDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:HST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0515248\",\n longitude: \"-1763929\"\n },\n \"America/Anchorage\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0611305\",\n longitude: \"-1495401\"\n },\n \"America/Anguilla\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Antigua\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Araguaina\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0071200\",\n longitude: \"-0481200\"\n },\n \"America/Argentina/Buenos_Aires\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0343600\",\n longitude: \"-0582700\"\n },\n \"America/Argentina/Catamarca\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0282800\",\n longitude: \"-0654700\"\n },\n \"America/Argentina/ComodRivadavia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Argentina/Cordoba\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0312400\",\n longitude: \"-0641100\"\n },\n \"America/Argentina/Jujuy\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0241100\",\n longitude: \"-0651800\"\n },\n \"America/Argentina/La_Rioja\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0292600\",\n longitude: \"-0665100\"\n },\n \"America/Argentina/Mendoza\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0325300\",\n longitude: \"-0684900\"\n },\n \"America/Argentina/Rio_Gallegos\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0513800\",\n longitude: \"-0691300\"\n },\n \"America/Argentina/Salta\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0244700\",\n longitude: \"-0652500\"\n },\n \"America/Argentina/San_Juan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0313200\",\n longitude: \"-0683100\"\n },\n \"America/Argentina/San_Luis\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0331900\",\n longitude: \"-0662100\"\n },\n \"America/Argentina/Tucuman\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0264900\",\n longitude: \"-0651300\"\n },\n \"America/Argentina/Ushuaia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0544800\",\n longitude: \"-0681800\"\n },\n \"America/Aruba\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Asuncion\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19701004T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700322T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=4SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0251600\",\n longitude: \"-0574000\"\n },\n \"America/Atikokan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Atka\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:HDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:HST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Bahia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0125900\",\n longitude: \"-0383100\"\n },\n \"America/Bahia_Banderas\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0204800\",\n longitude: \"-1051500\"\n },\n \"America/Barbados\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0130600\",\n longitude: \"-0593700\"\n },\n \"America/Belem\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0012700\",\n longitude: \"-0482900\"\n },\n \"America/Belize\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0173000\",\n longitude: \"-0881200\"\n },\n \"America/Blanc-Sablon\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Boa_Vista\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0024900\",\n longitude: \"-0604000\"\n },\n \"America/Bogota\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0043600\",\n longitude: \"-0740500\"\n },\n \"America/Boise\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0433649\",\n longitude: \"-1161209\"\n },\n \"America/Buenos_Aires\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Cambridge_Bay\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0690650\",\n longitude: \"-1050310\"\n },\n \"America/Campo_Grande\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0202700\",\n longitude: \"-0543700\"\n },\n \"America/Cancun\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0210500\",\n longitude: \"-0864600\"\n },\n \"America/Caracas\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0103000\",\n longitude: \"-0665600\"\n },\n \"America/Catamarca\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Cayenne\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0045600\",\n longitude: \"-0522000\"\n },\n \"America/Cayman\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Chicago\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0415100\",\n longitude: \"-0873900\"\n },\n \"America/Chihuahua\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0283800\",\n longitude: \"-1060500\"\n },\n \"America/Ciudad_Juarez\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0314400\",\n longitude: \"-1062900\"\n },\n \"America/Coral_Harbour\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Cordoba\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Costa_Rica\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0095600\",\n longitude: \"-0840500\"\n },\n \"America/Creston\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Cuiaba\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0153500\",\n longitude: \"-0560500\"\n },\n \"America/Curacao\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Danmarkshavn\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0764600\",\n longitude: \"-0184000\"\n },\n \"America/Dawson\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0640400\",\n longitude: \"-1392500\"\n },\n \"America/Dawson_Creek\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0554600\",\n longitude: \"-1201400\"\n },\n \"America/Denver\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0394421\",\n longitude: \"-1045903\"\n },\n \"America/Detroit\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0421953\",\n longitude: \"-0830245\"\n },\n \"America/Dominica\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Edmonton\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0533300\",\n longitude: \"-1132800\"\n },\n \"America/Eirunepe\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0064000\",\n longitude: \"-0695200\"\n },\n \"America/El_Salvador\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0134200\",\n longitude: \"-0891200\"\n },\n \"America/Ensenada\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Fort_Nelson\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0584800\",\n longitude: \"-1224200\"\n },\n \"America/Fort_Wayne\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Fortaleza\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0034300\",\n longitude: \"-0383000\"\n },\n \"America/Glace_Bay\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0461200\",\n longitude: \"-0595700\"\n },\n \"America/Godthab\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0100\\r\\nTZNAME:-01\\r\\nDTSTART:19700328T230000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0100\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19701025T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Goose_Bay\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0532000\",\n longitude: \"-0602500\"\n },\n \"America/Grand_Turk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0212800\",\n longitude: \"-0710800\"\n },\n \"America/Grenada\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Guadeloupe\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Guatemala\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0143800\",\n longitude: \"-0903100\"\n },\n \"America/Guayaquil\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0021000\",\n longitude: \"-0795000\"\n },\n \"America/Guyana\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0064800\",\n longitude: \"-0581000\"\n },\n \"America/Halifax\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0443900\",\n longitude: \"-0633600\"\n },\n \"America/Havana\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0230800\",\n longitude: \"-0822200\"\n },\n \"America/Hermosillo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0290400\",\n longitude: \"-1105800\"\n },\n \"America/Indiana/Indianapolis\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0394606\",\n longitude: \"-0860929\"\n },\n \"America/Indiana/Knox\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0411745\",\n longitude: \"-0863730\"\n },\n \"America/Indiana/Marengo\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0382232\",\n longitude: \"-0862041\"\n },\n \"America/Indiana/Petersburg\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0382931\",\n longitude: \"-0871643\"\n },\n \"America/Indiana/Tell_City\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0375711\",\n longitude: \"-0864541\"\n },\n \"America/Indiana/Vevay\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0384452\",\n longitude: \"-0850402\"\n },\n \"America/Indiana/Vincennes\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0384038\",\n longitude: \"-0873143\"\n },\n \"America/Indiana/Winamac\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0410305\",\n longitude: \"-0863611\"\n },\n \"America/Indianapolis\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Inuvik\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0682059\",\n longitude: \"-1334300\"\n },\n \"America/Iqaluit\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0634400\",\n longitude: \"-0682800\"\n },\n \"America/Jamaica\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0175805\",\n longitude: \"-0764736\"\n },\n \"America/Jujuy\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Juneau\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0581807\",\n longitude: \"-1342511\"\n },\n \"America/Kentucky/Louisville\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0381515\",\n longitude: \"-0854534\"\n },\n \"America/Kentucky/Monticello\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0364947\",\n longitude: \"-0845057\"\n },\n \"America/Knox_IN\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Kralendijk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/La_Paz\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0163000\",\n longitude: \"-0680900\"\n },\n \"America/Lima\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0120300\",\n longitude: \"-0770300\"\n },\n \"America/Los_Angeles\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0340308\",\n longitude: \"-1181434\"\n },\n \"America/Louisville\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Lower_Princes\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Maceio\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0094000\",\n longitude: \"-0354300\"\n },\n \"America/Managua\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0120900\",\n longitude: \"-0861700\"\n },\n \"America/Manaus\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0030800\",\n longitude: \"-0600100\"\n },\n \"America/Marigot\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Martinique\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0143600\",\n longitude: \"-0610500\"\n },\n \"America/Matamoros\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0255000\",\n longitude: \"-0973000\"\n },\n \"America/Mazatlan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0231300\",\n longitude: \"-1062500\"\n },\n \"America/Mendoza\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Menominee\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0450628\",\n longitude: \"-0873651\"\n },\n \"America/Merida\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0205800\",\n longitude: \"-0893700\"\n },\n \"America/Metlakatla\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0550737\",\n longitude: \"-1313435\"\n },\n \"America/Mexico_City\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0192400\",\n longitude: \"-0990900\"\n },\n \"America/Miquelon\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0470300\",\n longitude: \"-0562000\"\n },\n \"America/Moncton\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0460600\",\n longitude: \"-0644700\"\n },\n \"America/Monterrey\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0254000\",\n longitude: \"-1001900\"\n },\n \"America/Montevideo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0345433\",\n longitude: \"-0561245\"\n },\n \"America/Montreal\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Montserrat\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Nassau\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/New_York\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0404251\",\n longitude: \"-0740023\"\n },\n \"America/Nipigon\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Nome\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0643004\",\n longitude: \"-1652423\"\n },\n \"America/Noronha\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0035100\",\n longitude: \"-0322500\"\n },\n \"America/North_Dakota/Beulah\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0471551\",\n longitude: \"-1014640\"\n },\n \"America/North_Dakota/Center\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0470659\",\n longitude: \"-1011757\"\n },\n \"America/North_Dakota/New_Salem\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0465042\",\n longitude: \"-1012439\"\n },\n \"America/Nuuk\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0100\\r\\nTZNAME:-01\\r\\nDTSTART:19700328T230000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0100\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19701025T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0641100\",\n longitude: \"-0514400\"\n },\n \"America/Ojinaga\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0293400\",\n longitude: \"-1042500\"\n },\n \"America/Panama\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0085800\",\n longitude: \"-0793200\"\n },\n \"America/Pangnirtung\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Paramaribo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0055000\",\n longitude: \"-0551000\"\n },\n \"America/Phoenix\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0332654\",\n longitude: \"-1120424\"\n },\n \"America/Port-au-Prince\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0183200\",\n longitude: \"-0722000\"\n },\n \"America/Port_of_Spain\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Porto_Acre\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Porto_Velho\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0084600\",\n longitude: \"-0635400\"\n },\n \"America/Puerto_Rico\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0182806\",\n longitude: \"-0660622\"\n },\n \"America/Punta_Arenas\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0530900\",\n longitude: \"-0705500\"\n },\n \"America/Rainy_River\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Rankin_Inlet\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0624900\",\n longitude: \"-0920459\"\n },\n \"America/Recife\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0080300\",\n longitude: \"-0345400\"\n },\n \"America/Regina\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0502400\",\n longitude: \"-1043900\"\n },\n \"America/Resolute\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0744144\",\n longitude: \"-0944945\"\n },\n \"America/Rio_Branco\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0095800\",\n longitude: \"-0674800\"\n },\n \"America/Rosario\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Santa_Isabel\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Santarem\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0022600\",\n longitude: \"-0545200\"\n },\n \"America/Santiago\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700405T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700906T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0332700\",\n longitude: \"-0704000\"\n },\n \"America/Santo_Domingo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0182800\",\n longitude: \"-0695400\"\n },\n \"America/Sao_Paulo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0233200\",\n longitude: \"-0463700\"\n },\n \"America/Scoresbysund\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0100\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19701025T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0100\\r\\nTZNAME:-01\\r\\nDTSTART:19700328T230000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0702900\",\n longitude: \"-0215800\"\n },\n \"America/Shiprock\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Sitka\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0571035\",\n longitude: \"-1351807\"\n },\n \"America/St_Barthelemy\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/St_Johns\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0230\\r\\nTZOFFSETTO:-0330\\r\\nTZNAME:NST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0330\\r\\nTZOFFSETTO:-0230\\r\\nTZNAME:NDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0473400\",\n longitude: \"-0524300\"\n },\n \"America/St_Kitts\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/St_Lucia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/St_Thomas\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/St_Vincent\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Swift_Current\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0501700\",\n longitude: \"-1075000\"\n },\n \"America/Tegucigalpa\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0140600\",\n longitude: \"-0871300\"\n },\n \"America/Thule\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0763400\",\n longitude: \"-0684700\"\n },\n \"America/Thunder_Bay\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Tijuana\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0323200\",\n longitude: \"-1170100\"\n },\n \"America/Toronto\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0433900\",\n longitude: \"-0792300\"\n },\n \"America/Tortola\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Vancouver\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0491600\",\n longitude: \"-1230700\"\n },\n \"America/Virgin\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Whitehorse\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0604300\",\n longitude: \"-1350300\"\n },\n \"America/Winnipeg\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0495300\",\n longitude: \"-0970900\"\n },\n \"America/Yakutat\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0593249\",\n longitude: \"-1394338\"\n },\n \"America/Yellowknife\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Antarctica/Casey\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0661700\",\n longitude: \"+1103100\"\n },\n \"Antarctica/Davis\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0683500\",\n longitude: \"+0775800\"\n },\n \"Antarctica/DumontDUrville\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Antarctica/Macquarie\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0543000\",\n longitude: \"+1585700\"\n },\n \"Antarctica/Mawson\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0673600\",\n longitude: \"+0625300\"\n },\n \"Antarctica/McMurdo\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:NZDT\\r\\nDTSTART:19700927T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:NZST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Antarctica/Palmer\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0644800\",\n longitude: \"-0640600\"\n },\n \"Antarctica/Rothera\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0673400\",\n longitude: \"-0680800\"\n },\n \"Antarctica/South_Pole\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:NZDT\\r\\nDTSTART:19700927T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:NZST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Antarctica/Syowa\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Antarctica/Troll\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:+02\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:+00\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0720041\",\n longitude: \"+0023206\"\n },\n \"Antarctica/Vostok\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0782400\",\n longitude: \"+1065400\"\n },\n \"Arctic/Longyearbyen\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Aden\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Almaty\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0431500\",\n longitude: \"+0765700\"\n },\n \"Asia/Amman\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0315700\",\n longitude: \"+0355600\"\n },\n \"Asia/Anadyr\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0644500\",\n longitude: \"+1772900\"\n },\n \"Asia/Aqtau\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0443100\",\n longitude: \"+0501600\"\n },\n \"Asia/Aqtobe\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0501700\",\n longitude: \"+0571000\"\n },\n \"Asia/Ashgabat\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0375700\",\n longitude: \"+0582300\"\n },\n \"Asia/Ashkhabad\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Atyrau\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0470700\",\n longitude: \"+0515600\"\n },\n \"Asia/Baghdad\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0332100\",\n longitude: \"+0442500\"\n },\n \"Asia/Bahrain\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Baku\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0402300\",\n longitude: \"+0495100\"\n },\n \"Asia/Bangkok\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0134500\",\n longitude: \"+1003100\"\n },\n \"Asia/Barnaul\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0532200\",\n longitude: \"+0834500\"\n },\n \"Asia/Beirut\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0335300\",\n longitude: \"+0353000\"\n },\n \"Asia/Bishkek\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0425400\",\n longitude: \"+0743600\"\n },\n \"Asia/Brunei\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Calcutta\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0530\\r\\nTZOFFSETTO:+0530\\r\\nTZNAME:IST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Chita\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0520300\",\n longitude: \"+1132800\"\n },\n \"Asia/Choibalsan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0480400\",\n longitude: \"+1143000\"\n },\n \"Asia/Chongqing\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Chungking\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Colombo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0530\\r\\nTZOFFSETTO:+0530\\r\\nTZNAME:+0530\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0065600\",\n longitude: \"+0795100\"\n },\n \"Asia/Dacca\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Damascus\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0333000\",\n longitude: \"+0361800\"\n },\n \"Asia/Dhaka\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0234300\",\n longitude: \"+0902500\"\n },\n \"Asia/Dili\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0083300\",\n longitude: \"+1253500\"\n },\n \"Asia/Dubai\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0251800\",\n longitude: \"+0551800\"\n },\n \"Asia/Dushanbe\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0383500\",\n longitude: \"+0684800\"\n },\n \"Asia/Famagusta\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0350700\",\n longitude: \"+0335700\"\n },\n \"Asia/Gaza\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700328T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701031T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SA\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0313000\",\n longitude: \"+0342800\"\n },\n \"Asia/Harbin\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Hebron\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700328T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701031T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SA\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0313200\",\n longitude: \"+0350542\"\n },\n \"Asia/Ho_Chi_Minh\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0104500\",\n longitude: \"+1064000\"\n },\n \"Asia/Hong_Kong\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:HKT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0221700\",\n longitude: \"+1140900\"\n },\n \"Asia/Hovd\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0480100\",\n longitude: \"+0913900\"\n },\n \"Asia/Irkutsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0521600\",\n longitude: \"+1042000\"\n },\n \"Asia/Istanbul\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Jakarta\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:WIB\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0061000\",\n longitude: \"+1064800\"\n },\n \"Asia/Jayapura\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:WIT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0023200\",\n longitude: \"+1404200\"\n },\n \"Asia/Jerusalem\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:IDT\\r\\nDTSTART:19700327T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:IST\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0314650\",\n longitude: \"+0351326\"\n },\n \"Asia/Kabul\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0430\\r\\nTZOFFSETTO:+0430\\r\\nTZNAME:+0430\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0343100\",\n longitude: \"+0691200\"\n },\n \"Asia/Kamchatka\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0530100\",\n longitude: \"+1583900\"\n },\n \"Asia/Karachi\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:PKT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0245200\",\n longitude: \"+0670300\"\n },\n \"Asia/Kashgar\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Kathmandu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0545\\r\\nTZOFFSETTO:+0545\\r\\nTZNAME:+0545\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0274300\",\n longitude: \"+0851900\"\n },\n \"Asia/Katmandu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0545\\r\\nTZOFFSETTO:+0545\\r\\nTZNAME:+0545\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Khandyga\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0623923\",\n longitude: \"+1353314\"\n },\n \"Asia/Kolkata\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0530\\r\\nTZOFFSETTO:+0530\\r\\nTZNAME:IST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0223200\",\n longitude: \"+0882200\"\n },\n \"Asia/Krasnoyarsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0560100\",\n longitude: \"+0925000\"\n },\n \"Asia/Kuala_Lumpur\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Kuching\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0013300\",\n longitude: \"+1102000\"\n },\n \"Asia/Kuwait\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Macao\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Macau\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0221150\",\n longitude: \"+1133230\"\n },\n \"Asia/Magadan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0593400\",\n longitude: \"+1504800\"\n },\n \"Asia/Makassar\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:WITA\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0050700\",\n longitude: \"+1192400\"\n },\n \"Asia/Manila\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:PST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0143500\",\n longitude: \"+1210000\"\n },\n \"Asia/Muscat\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Nicosia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0351000\",\n longitude: \"+0332200\"\n },\n \"Asia/Novokuznetsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0534500\",\n longitude: \"+0870700\"\n },\n \"Asia/Novosibirsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0550200\",\n longitude: \"+0825500\"\n },\n \"Asia/Omsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0550000\",\n longitude: \"+0732400\"\n },\n \"Asia/Oral\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0511300\",\n longitude: \"+0512100\"\n },\n \"Asia/Phnom_Penh\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Pontianak\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:WIB\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0000200\",\n longitude: \"+1092000\"\n },\n \"Asia/Pyongyang\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:KST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0390100\",\n longitude: \"+1254500\"\n },\n \"Asia/Qatar\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0251700\",\n longitude: \"+0513200\"\n },\n \"Asia/Qostanay\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0531200\",\n longitude: \"+0633700\"\n },\n \"Asia/Qyzylorda\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0444800\",\n longitude: \"+0652800\"\n },\n \"Asia/Rangoon\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0630\\r\\nTZOFFSETTO:+0630\\r\\nTZNAME:+0630\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Riyadh\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0243800\",\n longitude: \"+0464300\"\n },\n \"Asia/Saigon\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Sakhalin\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0465800\",\n longitude: \"+1424200\"\n },\n \"Asia/Samarkand\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0394000\",\n longitude: \"+0664800\"\n },\n \"Asia/Seoul\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:KST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0373300\",\n longitude: \"+1265800\"\n },\n \"Asia/Shanghai\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0311400\",\n longitude: \"+1212800\"\n },\n \"Asia/Singapore\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0011700\",\n longitude: \"+1035100\"\n },\n \"Asia/Srednekolymsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0672800\",\n longitude: \"+1534300\"\n },\n \"Asia/Taipei\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0250300\",\n longitude: \"+1213000\"\n },\n \"Asia/Tashkent\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0412000\",\n longitude: \"+0691800\"\n },\n \"Asia/Tbilisi\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0414300\",\n longitude: \"+0444900\"\n },\n \"Asia/Tehran\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0330\\r\\nTZOFFSETTO:+0330\\r\\nTZNAME:+0330\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0354000\",\n longitude: \"+0512600\"\n },\n \"Asia/Tel_Aviv\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:IDT\\r\\nDTSTART:19700327T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:IST\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Thimbu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Thimphu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0272800\",\n longitude: \"+0893900\"\n },\n \"Asia/Tokyo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:JST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0353916\",\n longitude: \"+1394441\"\n },\n \"Asia/Tomsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0563000\",\n longitude: \"+0845800\"\n },\n \"Asia/Ujung_Pandang\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:WITA\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Ulaanbaatar\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0475500\",\n longitude: \"+1065300\"\n },\n \"Asia/Ulan_Bator\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Urumqi\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0434800\",\n longitude: \"+0873500\"\n },\n \"Asia/Ust-Nera\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0643337\",\n longitude: \"+1431336\"\n },\n \"Asia/Vientiane\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Vladivostok\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0431000\",\n longitude: \"+1315600\"\n },\n \"Asia/Yakutsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0620000\",\n longitude: \"+1294000\"\n },\n \"Asia/Yangon\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0630\\r\\nTZOFFSETTO:+0630\\r\\nTZNAME:+0630\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0164700\",\n longitude: \"+0961000\"\n },\n \"Asia/Yekaterinburg\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0565100\",\n longitude: \"+0603600\"\n },\n \"Asia/Yerevan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0401100\",\n longitude: \"+0443000\"\n },\n \"Atlantic/Azores\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:+00\\r\\nDTSTART:19700329T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:-0100\\r\\nTZNAME:-01\\r\\nDTSTART:19701025T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0374400\",\n longitude: \"-0254000\"\n },\n \"Atlantic/Bermuda\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0321700\",\n longitude: \"-0644600\"\n },\n \"Atlantic/Canary\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WEST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:WET\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0280600\",\n longitude: \"-0152400\"\n },\n \"Atlantic/Cape_Verde\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0100\\r\\nTZOFFSETTO:-0100\\r\\nTZNAME:-01\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0145500\",\n longitude: \"-0233100\"\n },\n \"Atlantic/Faeroe\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WEST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:WET\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Atlantic/Faroe\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WEST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:WET\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0620100\",\n longitude: \"-0064600\"\n },\n \"Atlantic/Jan_Mayen\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Atlantic/Madeira\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WEST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:WET\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0323800\",\n longitude: \"-0165400\"\n },\n \"Atlantic/Reykjavik\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Atlantic/South_Georgia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0541600\",\n longitude: \"-0363200\"\n },\n \"Atlantic/St_Helena\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Atlantic/Stanley\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0514200\",\n longitude: \"-0575100\"\n },\n \"Australia/ACT\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Australia/Adelaide\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:ACDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0345500\",\n longitude: \"+1383500\"\n },\n \"Australia/Brisbane\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0272800\",\n longitude: \"+1530200\"\n },\n \"Australia/Broken_Hill\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:ACDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0315700\",\n longitude: \"+1412700\"\n },\n \"Australia/Canberra\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Australia/Currie\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Australia/Darwin\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0122800\",\n longitude: \"+1305000\"\n },\n \"Australia/Eucla\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0845\\r\\nTZOFFSETTO:+0845\\r\\nTZNAME:+0845\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0314300\",\n longitude: \"+1285200\"\n },\n \"Australia/Hobart\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0425300\",\n longitude: \"+1471900\"\n },\n \"Australia/LHI\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:+1030\\r\\nDTSTART:19700405T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Australia/Lindeman\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0201600\",\n longitude: \"+1490000\"\n },\n \"Australia/Lord_Howe\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:+1030\\r\\nDTSTART:19700405T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0313300\",\n longitude: \"+1590500\"\n },\n \"Australia/Melbourne\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0374900\",\n longitude: \"+1445800\"\n },\n \"Australia/NSW\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Australia/North\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Australia/Perth\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:AWST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0315700\",\n longitude: \"+1155100\"\n },\n \"Australia/Queensland\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Australia/South\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:ACDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Australia/Sydney\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0335200\",\n longitude: \"+1511300\"\n },\n \"Australia/Tasmania\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Australia/Victoria\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Australia/West\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:AWST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Australia/Yancowinna\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:ACDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Brazil/Acre\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Brazil/DeNoronha\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Brazil/East\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Brazil/West\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Canada/Atlantic\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Canada/Central\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Canada/Eastern\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Canada/Mountain\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Canada/Newfoundland\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0230\\r\\nTZOFFSETTO:-0330\\r\\nTZNAME:NST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0330\\r\\nTZOFFSETTO:-0230\\r\\nTZNAME:NDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Canada/Pacific\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Canada/Saskatchewan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Canada/Yukon\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Chile/Continental\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700405T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700906T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Chile/EasterIsland\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:-06\\r\\nDTSTART:19700404T220000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SA\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700905T220000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SA\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Europe/Amsterdam\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Andorra\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0423000\",\n longitude: \"+0013100\"\n },\n \"Europe/Astrakhan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0462100\",\n longitude: \"+0480300\"\n },\n \"Europe/Athens\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0375800\",\n longitude: \"+0234300\"\n },\n \"Europe/Belfast\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:BST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Belgrade\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0445000\",\n longitude: \"+0203000\"\n },\n \"Europe/Berlin\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0523000\",\n longitude: \"+0132200\"\n },\n \"Europe/Bratislava\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Brussels\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0505000\",\n longitude: \"+0042000\"\n },\n \"Europe/Bucharest\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0442600\",\n longitude: \"+0260600\"\n },\n \"Europe/Budapest\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0473000\",\n longitude: \"+0190500\"\n },\n \"Europe/Busingen\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Chisinau\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0470000\",\n longitude: \"+0285000\"\n },\n \"Europe/Copenhagen\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Dublin\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:IST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0532000\",\n longitude: \"-0061500\"\n },\n \"Europe/Gibraltar\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0360800\",\n longitude: \"-0052100\"\n },\n \"Europe/Guernsey\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:BST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Helsinki\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0601000\",\n longitude: \"+0245800\"\n },\n \"Europe/Isle_of_Man\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:BST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Istanbul\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0410100\",\n longitude: \"+0285800\"\n },\n \"Europe/Jersey\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:BST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Kaliningrad\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0544300\",\n longitude: \"+0203000\"\n },\n \"Europe/Kiev\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Europe/Kirov\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:MSK\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0583600\",\n longitude: \"+0493900\"\n },\n \"Europe/Kyiv\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0502600\",\n longitude: \"+0303100\"\n },\n \"Europe/Lisbon\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:WET\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WEST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0384300\",\n longitude: \"-0090800\"\n },\n \"Europe/Ljubljana\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/London\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:BST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0513030\",\n longitude: \"+0000731\"\n },\n \"Europe/Luxembourg\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Madrid\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0402400\",\n longitude: \"-0034100\"\n },\n \"Europe/Malta\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0355400\",\n longitude: \"+0143100\"\n },\n \"Europe/Mariehamn\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Minsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0535400\",\n longitude: \"+0273400\"\n },\n \"Europe/Monaco\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Moscow\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:MSK\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0554521\",\n longitude: \"+0373704\"\n },\n \"Europe/Nicosia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Europe/Oslo\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Paris\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0485200\",\n longitude: \"+0022000\"\n },\n \"Europe/Podgorica\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Prague\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0500500\",\n longitude: \"+0142600\"\n },\n \"Europe/Riga\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0565700\",\n longitude: \"+0240600\"\n },\n \"Europe/Rome\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0415400\",\n longitude: \"+0122900\"\n },\n \"Europe/Samara\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0531200\",\n longitude: \"+0500900\"\n },\n \"Europe/San_Marino\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Sarajevo\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Saratov\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0513400\",\n longitude: \"+0460200\"\n },\n \"Europe/Simferopol\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:MSK\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0445700\",\n longitude: \"+0340600\"\n },\n \"Europe/Skopje\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Sofia\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0424100\",\n longitude: \"+0231900\"\n },\n \"Europe/Stockholm\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Tallinn\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0592500\",\n longitude: \"+0244500\"\n },\n \"Europe/Tirane\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0412000\",\n longitude: \"+0195000\"\n },\n \"Europe/Tiraspol\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Ulyanovsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0542000\",\n longitude: \"+0482400\"\n },\n \"Europe/Uzhgorod\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Europe/Vaduz\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Vatican\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Vienna\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0481300\",\n longitude: \"+0162000\"\n },\n \"Europe/Vilnius\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0544100\",\n longitude: \"+0251900\"\n },\n \"Europe/Volgograd\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:MSK\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0484400\",\n longitude: \"+0442500\"\n },\n \"Europe/Warsaw\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0521500\",\n longitude: \"+0210000\"\n },\n \"Europe/Zagreb\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Zaporozhye\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Europe/Zurich\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0472300\",\n longitude: \"+0083200\"\n },\n \"Indian/Antananarivo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Indian/Chagos\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0072000\",\n longitude: \"+0722500\"\n },\n \"Indian/Christmas\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Indian/Cocos\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0630\\r\\nTZOFFSETTO:+0630\\r\\nTZNAME:+0630\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Indian/Comoro\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Indian/Kerguelen\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Indian/Mahe\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Indian/Maldives\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0041000\",\n longitude: \"+0733000\"\n },\n \"Indian/Mauritius\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0201000\",\n longitude: \"+0573000\"\n },\n \"Indian/Mayotte\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Indian/Reunion\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Mexico/BajaNorte\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Mexico/BajaSur\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Mexico/General\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Apia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0135000\",\n longitude: \"-1714400\"\n },\n \"Pacific/Auckland\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:NZDT\\r\\nDTSTART:19700927T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:NZST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0365200\",\n longitude: \"+1744600\"\n },\n \"Pacific/Bougainville\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0061300\",\n longitude: \"+1553400\"\n },\n \"Pacific/Chatham\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1245\\r\\nTZOFFSETTO:+1345\\r\\nTZNAME:+1345\\r\\nDTSTART:19700927T024500\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1345\\r\\nTZOFFSETTO:+1245\\r\\nTZNAME:+1245\\r\\nDTSTART:19700405T034500\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0435700\",\n longitude: \"-1763300\"\n },\n \"Pacific/Chuuk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Easter\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:-06\\r\\nDTSTART:19700404T220000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SA\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700905T220000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SA\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0270900\",\n longitude: \"-1092600\"\n },\n \"Pacific/Efate\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0174000\",\n longitude: \"+1682500\"\n },\n \"Pacific/Enderbury\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Fakaofo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0092200\",\n longitude: \"-1711400\"\n },\n \"Pacific/Fiji\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0180800\",\n longitude: \"+1782500\"\n },\n \"Pacific/Funafuti\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Galapagos\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:-06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0005400\",\n longitude: \"-0893600\"\n },\n \"Pacific/Gambier\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:-09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0230800\",\n longitude: \"-1345700\"\n },\n \"Pacific/Guadalcanal\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0093200\",\n longitude: \"+1601200\"\n },\n \"Pacific/Guam\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:ChST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0132800\",\n longitude: \"+1444500\"\n },\n \"Pacific/Honolulu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:HST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0211825\",\n longitude: \"-1575130\"\n },\n \"Pacific/Johnston\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:HST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Kanton\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0024700\",\n longitude: \"-1714300\"\n },\n \"Pacific/Kiritimati\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1400\\r\\nTZOFFSETTO:+1400\\r\\nTZNAME:+14\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0015200\",\n longitude: \"-1572000\"\n },\n \"Pacific/Kosrae\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0051900\",\n longitude: \"+1625900\"\n },\n \"Pacific/Kwajalein\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0090500\",\n longitude: \"+1672000\"\n },\n \"Pacific/Majuro\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Marquesas\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0930\\r\\nTZOFFSETTO:-0930\\r\\nTZNAME:-0930\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0090000\",\n longitude: \"-1393000\"\n },\n \"Pacific/Midway\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1100\\r\\nTZOFFSETTO:-1100\\r\\nTZNAME:SST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Nauru\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0003100\",\n longitude: \"+1665500\"\n },\n \"Pacific/Niue\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1100\\r\\nTZOFFSETTO:-1100\\r\\nTZNAME:-11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0190100\",\n longitude: \"-1695500\"\n },\n \"Pacific/Norfolk\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0290300\",\n longitude: \"+1675800\"\n },\n \"Pacific/Noumea\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0221600\",\n longitude: \"+1662700\"\n },\n \"Pacific/Pago_Pago\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1100\\r\\nTZOFFSETTO:-1100\\r\\nTZNAME:SST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0141600\",\n longitude: \"-1704200\"\n },\n \"Pacific/Palau\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0072000\",\n longitude: \"+1342900\"\n },\n \"Pacific/Pitcairn\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:-08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0250400\",\n longitude: \"-1300500\"\n },\n \"Pacific/Pohnpei\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Ponape\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Port_Moresby\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0093000\",\n longitude: \"+1471000\"\n },\n \"Pacific/Rarotonga\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:-10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0211400\",\n longitude: \"-1594600\"\n },\n \"Pacific/Saipan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:ChST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Samoa\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1100\\r\\nTZOFFSETTO:-1100\\r\\nTZNAME:SST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Tahiti\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:-10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0173200\",\n longitude: \"-1493400\"\n },\n \"Pacific/Tarawa\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0012500\",\n longitude: \"+1730000\"\n },\n \"Pacific/Tongatapu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0210800\",\n longitude: \"-1751200\"\n },\n \"Pacific/Truk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Wake\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Wallis\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Yap\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Alaska\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Aleutian\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:HDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:HST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Arizona\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Central\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/East-Indiana\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Eastern\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Hawaii\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:HST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Indiana-Starke\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Michigan\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Mountain\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Pacific\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Samoa\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1100\\r\\nTZOFFSETTO:-1100\\r\\nTZNAME:SST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n }\n};\nconst tzData = {\n version,\n aliases,\n zones\n};\nclass TimezoneManager {\n /**\n * Map of aliases\n * Alias name => timezoneId\n */\n _aliases = /* @__PURE__ */ new Map();\n /**\n * Map of Timezones\n * timezoneId => Timezone\n */\n _timezones = /* @__PURE__ */ new Map();\n /**\n * List of aliases that were registered while their targets were missing\n * [[aliasName, timezoneId], ...]\n */\n _pendingAliases = [];\n /**\n * Gets a timezone for the given id.\n *\n * @param timezoneId - The id of the timezone\n */\n getTimezoneForId(timezoneId) {\n let level = 0;\n while (level++ < 20) {\n if (this._timezones.has(timezoneId)) {\n return this._timezones.get(timezoneId);\n }\n if (this._aliases.has(timezoneId)) {\n timezoneId = this._aliases.get(timezoneId);\n } else {\n return null;\n }\n }\n console.error(\"TimezoneManager.getTimezoneForIdRec() exceeds recursion limits\");\n return null;\n }\n /**\n * Checks if there is a timezone for the given id stored in this manager.\n *\n * @param timezoneId - The id of the timezone\n */\n hasTimezoneForId(timezoneId) {\n return this._timezones.has(timezoneId) || this._aliases.has(timezoneId);\n }\n /**\n * Checks if the given timezone id is an alias.\n *\n * @param timezoneId - The id of the timezone\n */\n isAlias(timezoneId) {\n return !this._timezones.has(timezoneId) && this._aliases.has(timezoneId);\n }\n /**\n * Lists all timezones.\n *\n * @param includeAliases - Whether or not to include aliases\n */\n listAllTimezones(includeAliases = false) {\n const timezones = Array.from(this._timezones.keys());\n if (includeAliases) {\n return timezones.concat(Array.from(this._aliases.keys()));\n }\n return timezones;\n }\n /**\n * Registers a timezone\n *\n * @param timezone - The timezone-object to register\n */\n registerTimezone(timezone) {\n this._timezones.set(timezone.timezoneId, timezone);\n ICAL.TimezoneService.register(timezone.toICALTimezone(), timezone.timezoneId);\n this._pendingAliases = this._pendingAliases.filter(([aliasName, timezoneId]) => {\n if (timezoneId !== timezone.timezoneId) {\n return true;\n }\n ICAL.TimezoneService.register(timezone.toICALTimezone(), aliasName);\n return false;\n });\n }\n registerDefaultTimezones() {\n console.debug(`@nextcloud/calendar-js app is using version ${tzData.version} of the timezone database`);\n for (const tzid in tzData.zones) {\n const ics = [\n \"BEGIN:VTIMEZONE\",\n \"TZID:\" + tzid,\n ...tzData.zones[tzid].ics,\n \"END:VTIMEZONE\"\n ].join(\"\\r\\n\");\n this.registerTimezoneFromICS(tzid, ics);\n }\n for (const tzid in tzData.aliases) {\n this.registerAlias(tzid, tzData.aliases[tzid].aliasTo);\n }\n }\n /**\n * Registers a timezone based on ics data.\n *\n * @param timezoneId - The id of the timezone\n * @param ics - The iCalendar timezone definition\n */\n registerTimezoneFromICS(timezoneId, ics) {\n const timezone = new Timezone(timezoneId, ics);\n this.registerTimezone(timezone);\n }\n /**\n * Registers a new timezone-alias\n *\n * @param aliasName - The timezone-id of the alias\n * @param timezoneId - The timezone-id to resolve the alias to\n */\n registerAlias(aliasName, timezoneId) {\n this._aliases.set(aliasName, timezoneId);\n const resolvedTimezone = this.getTimezoneForId(timezoneId);\n if (!resolvedTimezone) {\n this._pendingAliases.push([aliasName, timezoneId]);\n return;\n }\n ICAL.TimezoneService.register(resolvedTimezone.toICALTimezone(), aliasName);\n }\n /**\n * Unregisters a timezone.\n *\n * @param timezoneId - Unregisters a timezone by Id\n */\n unregisterTimezones(timezoneId) {\n this._timezones.delete(timezoneId);\n ICAL.TimezoneService.remove(timezoneId);\n }\n /**\n * Unregisters a timezone-alias.\n *\n * @param aliasName - The alias to unregister\n */\n unregisterAlias(aliasName) {\n this._aliases.delete(aliasName);\n this._pendingAliases = this._pendingAliases.filter(([pendingAliasName]) => pendingAliasName !== aliasName);\n ICAL.TimezoneService.remove(aliasName);\n }\n /**\n * Clear all timezones\n */\n clearAllTimezones() {\n this._aliases = /* @__PURE__ */ new Map();\n this._pendingAliases = [];\n this._timezones = /* @__PURE__ */ new Map();\n ICAL.TimezoneService.reset();\n timezoneManager.registerTimezone(Timezone.utc);\n timezoneManager.registerTimezone(Timezone.floating);\n timezoneManager.registerAlias(\"GMT\", Timezone.utc.timezoneId);\n timezoneManager.registerAlias(\"Z\", Timezone.utc.timezoneId);\n }\n}\nconst timezoneManager = new TimezoneManager();\ntimezoneManager.clearAllTimezones();\nfunction getTimezoneManager() {\n return timezoneManager;\n}\nexport {\n Timezone,\n getReadableTimezoneName,\n getSortedTimezoneList,\n getTimezoneManager,\n isOlsonTimezone\n};\n","import { u as useModelMigration } from \"./useModelMigration-DBUi8saj.mjs\";\nimport { r as register, z as t43, A as t25, a as t } from \"./_l10n-DSLCwJSN.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { N as NcSelect } from \"./NcSelect-TjZw7TJ_.mjs\";\nimport { getTimezoneManager as getTimezoneManager$1 } from \"@nextcloud/timezones\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t43);\nregister(t25);\nfunction getSortedTimezoneList(timezoneList = [], additionalTimezones = []) {\n const sortedByContinent = {};\n const sortedList = [];\n for (const timezoneId of timezoneList) {\n const components = timezoneId.split(\"/\");\n let [continent, name] = [components.shift(), components.join(\"/\")];\n if (!name) {\n name = continent;\n continent = t(\"Global\");\n }\n sortedByContinent[continent] = sortedByContinent[continent] || {\n continent,\n regions: []\n };\n sortedByContinent[continent].regions.push({\n label: getReadableTimezoneName(name),\n cities: [],\n timezoneId\n });\n }\n for (const additionalTimezone of additionalTimezones) {\n const { continent, label, timezoneId } = additionalTimezone;\n sortedByContinent[continent] = sortedByContinent[continent] || {\n continent,\n regions: []\n };\n sortedByContinent[continent].regions.push({\n label,\n cities: [],\n timezoneId\n });\n }\n for (const continent in sortedByContinent) {\n if (!Object.hasOwn(sortedByContinent, continent)) {\n continue;\n }\n sortedByContinent[continent].regions.sort((a, b) => {\n if (a.label < b.label) {\n return -1;\n }\n return 1;\n });\n sortedList.push(sortedByContinent[continent]);\n }\n sortedList.sort((a, b) => {\n if (a.continent < b.continent) {\n return -1;\n }\n return 1;\n });\n return sortedList;\n}\nfunction getReadableTimezoneName(timezoneId) {\n return timezoneId.split(\"_\").join(\" \").replace(\"St \", \"St. \").split(\"/\").join(\" - \");\n}\nconst timezoneManager = getTimezoneManager$1();\nlet initialized = false;\nfunction getTimezoneManager() {\n if (!initialized) {\n timezoneManager.registerDefaultTimezones();\n initialized = true;\n }\n return timezoneManager;\n}\nconst _sfc_main = {\n name: \"NcTimezonePicker\",\n components: {\n NcSelect\n },\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * An array of additional timezones to include with the standard database. Useful if there is a custom timezone, e.g. read from user data\n */\n additionalTimezones: {\n type: Array,\n default: () => []\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: String,\n default: void 0\n },\n /**\n * The selected timezone. Use v-model for two-way binding. The default timezone is floating, which means a time independent of timezone. See https://icalendar.org/CalDAV-Access-RFC-4791/7-3-date-and-floating-time.html for details.\n */\n modelValue: {\n type: String,\n default: \"floating\"\n },\n /**\n * ID of the inner vue-select element, can be used for labels like: `vs-${uid}__combobox`\n */\n uid: {\n type: [String, Number],\n default: () => \"tz-\".concat(GenRandomId(5))\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"input\",\n /**\n * Two-way binding of the value prop. Use v-model=\"selectedTimezone\" for two-way binding\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"input\");\n return {\n model\n };\n },\n computed: {\n placeholder() {\n return t(\"Type to search time zone\");\n },\n selectedTimezone() {\n for (const additionalTimezone of this.additionalTimezones) {\n if (additionalTimezone.timezoneId === this.model) {\n return additionalTimezone;\n }\n }\n return {\n label: getReadableTimezoneName(this.model),\n timezoneId: this.model\n };\n },\n options() {\n const timezoneManager2 = getTimezoneManager();\n const timezoneList = getSortedTimezoneList(timezoneManager2.listAllTimezones(), this.additionalTimezones);\n let timezonesGrouped = [];\n Object.values(timezoneList).forEach((group) => {\n timezonesGrouped = timezonesGrouped.concat(group.regions);\n });\n return timezonesGrouped;\n }\n },\n methods: {\n t,\n change(newValue) {\n if (!newValue) {\n return;\n }\n this.model = newValue.timezoneId;\n },\n /**\n * Returns whether this is a continent label,\n * or an actual timezone. Continent labels are not selectable.\n *\n * @param {string} option The option\n * @return {boolean}\n */\n isSelectable(option) {\n return !option.timezoneId.startsWith(\"tz-group__\");\n },\n /**\n * Function to filter the timezone list.\n * We search in the timezoneId, so both continent and region names can be matched.\n *\n * @param {object} option The timezone option\n * @param {string} label The label of the timezone\n * @param {string} search The search string\n * @return {boolean}\n */\n filterBy(option, label, search) {\n const terms = search.trim().split(\" \");\n if (option.timezoneId.startsWith(\"tz-group__\")) {\n return option.regions.some((region) => {\n return this.matchTimezoneId(region.timezoneId, terms);\n });\n }\n return this.matchTimezoneId(option.timezoneId, terms);\n },\n matchTimezoneId(timezoneId, terms) {\n return terms.every((term) => timezoneId.toLowerCase().includes(term.toLowerCase()));\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcSelect\", { attrs: { \"aria-label-combobox\": _vm.t(\"Search for time zone\"), \"clearable\": false, \"filter-by\": _vm.filterBy, \"multiple\": false, \"options\": _vm.options, \"placeholder\": _vm.placeholder, \"selectable\": _vm.isSelectable, \"uid\": _vm.uid, \"value\": _vm.selectedTimezone, \"label\": \"label\" }, on: { \"option:selected\": _vm.change } });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcTimezonePicker = __component__.exports;\nexport {\n NcTimezonePicker as N\n};\n//# sourceMappingURL=NcTimezonePicker-D4y736xC.mjs.map\n","import '../assets/NcDateTimePicker-C6sMtYzL.css';\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nimport { getFirstDay, getDayNamesMin, getDayNamesShort, getDayNames, getMonthNamesShort, getMonthNames } from \"@nextcloud/l10n\";\nimport DatePicker from \"vue2-datepicker\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { u as useModelMigration } from \"../chunks/useModelMigration-DBUi8saj.mjs\";\nimport { r as register, I as t38, a as t } from \"../chunks/_l10n-DSLCwJSN.mjs\";\nimport { G as GenRandomId } from \"../chunks/GenRandomId-F5ebeBB_.mjs\";\nimport { l as logger } from \"../chunks/logger-D3RVzcfQ.mjs\";\nimport { N as NcPopover } from \"../chunks/NcPopover-nzbq2IjT.mjs\";\nimport { N as NcTimezonePicker } from \"../chunks/NcTimezonePicker-D4y736xC.mjs\";\nimport { S as ScopeComponent } from \"../chunks/ScopeComponent-DsONbC6w.mjs\";\nconst _sfc_main$2 = {\n name: \"CalendarBlankIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon calendar-blank-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst CalendarBlank = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"WebIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon web-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst Web = __component__$1.exports;\nregister(t38);\nconst formatMap = {\n date: \"YYYY-MM-DD\",\n datetime: \"YYYY-MM-DD H:mm:ss\",\n year: \"YYYY\",\n month: \"YYYY-MM\",\n time: \"H:mm:ss\",\n week: \"w\"\n};\nconst _sfc_main = {\n name: \"NcDateTimePicker\",\n components: {\n CalendarBlank,\n DatePicker,\n NcPopover,\n NcTimezonePicker,\n Web\n },\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Allow to clear the input.\n */\n clearable: {\n type: Boolean,\n default: false\n },\n /**\n * Default increment step for minutes in the time picker.\n */\n minuteStep: {\n type: Number,\n default: 10\n },\n /**\n * Since 8.25.0: Support 'date-range', 'time-range' and 'datetime-range' values.\n */\n type: {\n type: String,\n default: \"date\",\n validator: (type) => [\"date\", \"time\", \"datetime\", \"week\", \"month\", \"year\", \"date-range\", \"time-range\", \"datetime-range\"].includes(type)\n },\n /**\n * Either `moment.js` formatting tokens or a function taking a Date object and returning a string.\n * Warning: In v9 this will change the accepted token format to standardized Unicode tokens instead!\n */\n format: {\n type: [String, Function],\n default: null\n },\n /**\n * @deprecated use `format` instead\n */\n formatter: {\n type: Object,\n default: null\n },\n /**\n * The locale to use for formatting the shown dates.\n * By default the users current Nextcloud locale is used.\n */\n lang: {\n type: Object,\n default: null\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n // eslint-disable-next-line\n value: {\n default: void 0\n },\n /**\n * The value to initialize, but also two-way bind the selected date. The date is – like the `Date` object in\n * JavaScript – tied to UTC. The selected time zone does not have an influence of the selected time and date\n * value. You have to translate the time yourself when you want to factor in time zones.\n */\n // eslint-disable-next-line\n modelValue: {\n default: () => /* @__PURE__ */ new Date()\n },\n /**\n * The preselected IANA time zone ID for the time zone picker, only relevant in combination with `:show-timezone-select=\"true\"`. Example: `Europe/Berlin`. The prop supports two-way binding through the .sync modifier.\n */\n timezoneId: {\n type: String,\n default: \"UTC\"\n },\n /**\n * Include a timezone picker within the menu.\n * Please note that the dates are still bound to the locale timezone\n * and any conversion needs to be done by the app itself.\n */\n showTimezoneSelect: {\n type: Boolean,\n default: false\n },\n /**\n * If set to true the timezone select icon will be highlighted.\n */\n highlightTimezone: {\n type: Boolean,\n default: false\n },\n /**\n * If set to true the menu will be placed on the ``\n * instead of default placement on the picker.\n */\n appendToBody: {\n type: Boolean,\n default: false\n },\n /**\n * Show the ISO week numbers within the calendar.\n */\n showWeekNumber: {\n type: Boolean,\n default: false\n },\n /**\n * Optional custom placeholder for the input box.\n */\n placeholder: {\n type: String,\n default: null\n },\n /**\n * @deprecated use the 'date-range' or 'datetime-range' type instead.\n */\n range: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"update:timezone-id\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model,\n timezoneDialogHeaderId: \"timezone-dialog-header-\".concat(GenRandomId())\n };\n },\n data() {\n return {\n showTimezonePopover: false,\n tzVal: this.timezoneId\n };\n },\n computed: {\n realType() {\n return this.type.split(\"-\")[0];\n },\n /**\n * Datepicker language\n * https://github.com/mengxiong10/vue2-datepicker/blob/master/locale.md\n *\n * @return {object}\n */\n defaultLang() {\n return {\n formatLocale: {\n months: getMonthNames(),\n monthsShort: getMonthNamesShort(),\n weekdays: getDayNames(),\n weekdaysShort: getDayNamesShort(),\n weekdaysMin: getDayNamesMin(),\n // 0 = sunday, 1 = monday\n firstDayOfWeek: getFirstDay()\n },\n monthFormat: \"MMMM\"\n };\n },\n /**\n * Translated placeholder\n *\n * @return {string}\n */\n defaultPlaceholder() {\n if (this.realType === \"time\") {\n return t(\"Pick a time\");\n }\n if (this.realType === \"month\") {\n return t(\"Pick a month\");\n }\n if (this.realType === \"year\") {\n return t(\"Pick a year\");\n }\n if (this.realType === \"week\") {\n return t(\"Pick a week\");\n }\n if (this.realType === \"date\") {\n return t(\"Pick a date\");\n }\n return t(\"Pick a date and a time\");\n },\n /**\n * Is the range picker enabled\n */\n internalRange() {\n return this.range || this.type.endsWith(\"-range\");\n },\n internalFormat() {\n if (this.format && typeof this.format === \"string\") {\n return this.format;\n }\n return formatMap[this.realType] || formatMap.date;\n },\n /**\n * The formatter used for the vue-datepicker to fix nextcloud-libraries/nextcloud-vue#5044\n */\n internalFormatter() {\n var _a;\n const getWeek = (date) => {\n const firstThursday = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n firstThursday.setUTCDate(firstThursday.getUTCDate() + 4 - (firstThursday.getUTCDay() || 7));\n const yearStart = new Date(Date.UTC(firstThursday.getUTCFullYear(), 0, 1));\n return Math.ceil(((firstThursday - yearStart) / 864e5 + 1) / 7);\n };\n return __spreadValues(__spreadValues({\n getWeek\n }, typeof this.format === \"function\" ? { stringify: this.format } : {}), (_a = this.formatter) != null ? _a : {});\n }\n },\n methods: {\n t,\n handleSelectYear(year) {\n const value = this.$refs.datepicker.currentValue;\n if (value) {\n try {\n const date = new Date(new Date(value).setFullYear(year));\n this.$refs.datepicker.selectDate(date);\n } catch (e) {\n logger.error(\"Invalid value\", { value, year });\n }\n }\n },\n handleSelectMonth(month) {\n const value = this.$refs.datepicker.currentValue;\n if (value) {\n try {\n const date = new Date(new Date(value).setMonth(month));\n this.$refs.datepicker.selectDate(date);\n } catch (e) {\n logger.error(\"Invalid value\", { value, month });\n }\n }\n },\n /**\n * Toggles the visibility of the time zone popover\n */\n toggleTimezonePopover() {\n if (!this.showTimezoneSelect) {\n return;\n }\n this.showTimezonePopover = !this.showTimezonePopover;\n }\n }\n};\nvar _sfc_render = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"DatePicker\", _vm._g(_vm._b({ ref: \"datepicker\", attrs: { \"append-to-body\": _vm.appendToBody, \"clearable\": _vm.clearable, \"format\": _vm.internalFormat, \"formatter\": _vm.internalFormatter, \"lang\": _vm.lang ? _vm.lang : _vm.defaultLang, \"minute-step\": _vm.minuteStep, \"placeholder\": _vm.placeholder ? _vm.placeholder : _vm.defaultPlaceholder, \"popup-class\": { \"show-week-number\": _vm.showWeekNumber }, \"range\": _vm.internalRange, \"show-week-number\": _vm.showWeekNumber, \"type\": _vm.realType, \"value\": _vm.model }, on: { \"select-year\": _vm.handleSelectYear, \"select-month\": _vm.handleSelectMonth, \"input\": function($event) {\n _vm.model = $event;\n } }, scopedSlots: _vm._u([{ key: \"icon-calendar\", fn: function() {\n return [_vm.showTimezoneSelect ? _c(\"NcPopover\", { attrs: { \"popup-role\": \"dialog\", \"shown\": _vm.showTimezonePopover, \"popover-base-class\": \"timezone-select__popper\" }, on: { \"update:shown\": function($event) {\n _vm.showTimezonePopover = $event;\n } }, scopedSlots: _vm._u([{ key: \"trigger\", fn: function({ attrs }) {\n return [_c(\"button\", _vm._b({ staticClass: \"datetime-picker-inline-icon\", class: { \"datetime-picker-inline-icon--highlighted\": _vm.highlightTimezone }, on: { \"mousedown\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return (() => {\n }).apply(null, arguments);\n } } }, \"button\", attrs, false), [_c(\"Web\", { attrs: { \"size\": 20 } })], 1)];\n } }], null, false, 3026992387) }, [_c(\"div\", { attrs: { \"role\": \"dialog\", \"aria-labelledby\": _vm.timezoneDialogHeaderId } }, [_c(\"div\", { staticClass: \"timezone-popover-wrapper__label\" }, [_c(\"strong\", { attrs: { \"id\": _vm.timezoneDialogHeaderId } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Please select a time zone:\")) + \" \")])]), _c(\"NcTimezonePicker\", { staticClass: \"timezone-popover-wrapper__timezone-select\", on: { \"input\": function($event) {\n return _vm.$emit(\"update:timezone-id\", arguments[0]);\n } }, model: { value: _vm.tzVal, callback: function($$v) {\n _vm.tzVal = $$v;\n }, expression: \"tzVal\" } })], 1)]) : _c(\"CalendarBlank\", { attrs: { \"size\": 20 } })];\n }, proxy: true }, _vm._l(_vm.$scopedSlots, function(_, slot) {\n return { key: slot, fn: function(scope) {\n return [_vm._t(slot, null, null, scope)];\n } };\n })], null, true) }, \"DatePicker\", _vm.$attrs, false), _vm.$listeners));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"3e415d44\"\n);\nconst NcDateTimePicker = __component__.exports;\nScopeComponent(NcDateTimePicker);\nexport {\n NcDateTimePicker as default\n};\n//# sourceMappingURL=NcDateTimePicker.mjs.map\n"],"names":["isDate","value","toDate","isValidDate","startOfWeek","firstDayOfWeek","date","day","diff","startOfWeekYear","_ref","_ref$firstDayOfWeek","_ref$firstWeekContain","firstWeekContainsDate","year","firstDateOfFirstWeek","i","getWeek","_ref2","_ref2$firstDayOfWeek","_ref2$firstWeekContai","firstDateOfThisWeek","locale","REGEX_FORMAT","pad","val","len","output","sign","getOffset","formatTimezone","offset","delimeter","absOffset","hours","minutes","meridiem","h","_","isLowercase","word","formatFlags","y","meridiemFunc","format","str","options","formatStr","defaultLocale","match","p1","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","arr2","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","source","key","_defineProperty","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_n","_d","_e","_i","_s","err","obj","formattingTokens","match1","match2","match3","match4","match1to2","matchShortOffset","matchSigned","matchTimestamp","YEAR","MONTH","DAY","HOUR","MINUTE","SECOND","MILLISECOND","parseFlags","addParseFlag","token","regex","callback","tokens","func","input","escapeStringRegExp","matchWordRegExp","localeKey","array","matchWordCallback","index","cent","matchMeridiem","defaultIsPM","isPM","offsetFromString","_ref8","_ref9","symbol","hour","minute","to24hour","getFullInputArray","backupDate","result","backupArr","useBackup","createDate","m","d","M","s","ms","createUTCDate","_len","args","_key","makeParser","dateString","length","mark","parseTo","parser","parse","_options$locale","_locale","_options$backupDate","parseResult","month","second","millisecond","weekday","week","inputArray","firstDate","parsedDate","_typeof","_extends","_objectSpread2","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","_unsupportedIterableToArray","o","minLen","_arrayLikeToArray","n","_extends$1","a","b","c","normalMerge","toArrayMerge","functionalMerge","mergeJsxProps","e","f","g","mergeFn","helper","isValidRangeDate","isValidDates","dates","getValidDate","backup","startOfYear","startOfMonth","startOfDay","getCalendar","calendar","lastDayInLastMonth","firstDayInLastMonth","lastDayInCurrentMonth","lastMonthLength","nextMonthLength","_i2","setMonth","dirtyDate","dirtyMonth","daysInMonth","setYear","dirtyYear","assignTime","time","chunk","size","isObject","pick","props","res","prop","mergeDeep","unwrapExports","x","createCommonjsModule","fn","module","en","exports","_default","en$1","lang","locales","name","isLocal","l","getLocale","rafThrottle","isRunning","_this","getPopupElementSize","element","originalDisplay","originalVisibility","styles","width","height","getRelativePosition","el","targetWidth","targetHeight","fixed","left","top","offsetX","offsetY","relativeRect","dw","dh","getScrollParent","node","until","style","scroll","script","_this2","relativeElement","evt","popup","appendToBody","_this$_popupRect","_getRelativePosition","normalizeComponent","template","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","__vue_script__","__vue_render__","_vm","_h","_c","__vue_staticRenderFns__","__vue_inject_styles__","__vue_component__","__vue_render__$1","__vue_staticRenderFns__$1","__vue_inject_styles__$1","__vue_component__$1","__vue_render__$2","__vue_staticRenderFns__$2","__vue_inject_styles__$2","__vue_component__$2","__vue_render__$3","__vue_staticRenderFns__$3","__vue_inject_styles__$3","__vue_component__$3","script$1","__vue_script__$1","__vue_render__$4","__vue_staticRenderFns__$4","__vue_inject_styles__$4","__vue_component__$4","script$2","_this$getLocale","yearFormat","monthBeforeYear","_this$getLocale$month","monthFormat","yearLabel","monthLabel","days","type","v","panel","cell","_index$split$map","_index$split$map2","row","col","fmt","__vue_script__$2","__vue_render__$5","item","$event","j","__vue_staticRenderFns__$5","__vue_inject_styles__$5","__vue_component__$5","script$3","monthsLocale","months","text","__vue_script__$3","__vue_render__$6","__vue_staticRenderFns__$6","__vue_inject_styles__$6","__vue_component__$6","script$4","last","firstYear","years","__vue_script__$4","__vue_render__$7","__vue_staticRenderFns__$7","__vue_inject_styles__$7","__vue_component__$7","CalendarPanel","panels","map","start","calendarDate","oldCalendar","oldPanel","_date","_date2","cellDate","notCurrentMonth","classes","state","_cellDate","_cellDate2","end","active","innerCalendar","CalendarRange","calendars","_this$innerValue","startValue","endValue","adjustIndex","gap","_calendars","calendarLeft","calendarRight","yearDiff","monthDiff","min","max","currentDates","classnames","inRange","data","range","_range$map","_range$map2","calendarRange","on","prefixClass","scrollBarWidth","getScrollbarWidth","outer","inner","script$5","wrap","heightPercentage","scrollHeight","scrollTop","offsetTop","clientY","clientHeight","__vue_script__$5","__vue_render__$8","__vue_staticRenderFns__$8","__vue_inject_styles__$8","__vue_component__$8","padNumber","generateOptions","step","scrollTo","to","duration","difference","tick","script$6","cols","num","_this3","_this4","_this5","elements","scrollElement","currentTarget","colIndex","cellIndex","__vue_script__$6","__vue_render__$9","__vue_staticRenderFns__$9","__vue_inject_styles__$9","__vue_component__$9","parseOption","values","scrollTo$1","script$7","startMinutes","endMinutes","stepMinutes","timeMinutes","__vue_script__$7","__vue_render__$a","__vue_staticRenderFns__$a","__vue_inject_styles__$a","__vue_component__$a","script$8","titleFormat","defaultProps","minHour","maxHour","__vue_script__$8","__vue_render__$b","__vue_staticRenderFns__$b","__vue_inject_styles__$b","__vue_component__$b","TimeRange","_this$value","defaultValues","DatetimePanel","datetime","calendarProps","timeProps","DatetimeRange","datetimes","componentMap","componentRangeMap","DatePicker","types","close","disabledDate","disabledTime","nextDates","keyCode","fallback","slotFn","className","attrs","events","calendarIcon","Component","content","_class","inline","disabled","sidedar","Vue","Binary","aString","aValue","b64","o1","o2","o3","h1","h2","h3","h4","bits","ac","enc","tmp_arr","r","dec","DURATION_LETTERS","DATA_PROPS_TO_COPY","Duration","aSeconds","string","aStr","pos","dict","chunks","numeric","parseDurationChunk","aData","seconds","secs","trunc","aOther","thisSeconds","otherSeconds","letter","number","isStrictlyNaN","Time","_daysInMonth","aDayOfYear","aYear","doy","tt","is_leap","strictParseInt","zone","zoneId","Timezone","timeData","aProperty","aDate","useUTC","aZone","aWeekStart","t","dow","wkst","yr","LTRS","dom","#epochTime","attr","timezone","TimezoneService","firstDow","dowCacheKey","q","Y","aFirstDayOfWeek","delta","aDayOfWeek","aPos","otherDay","startDow","endDow","wnCacheKey","week1","dt","isoyear","daysBetween","answer","aDuration","mult","unixTime","other","tz","rc","copy","zone_equals","design$1","pad2","aExtraDays","aExtraHours","aExtraMinutes","aExtraSeconds","aTime","minutesOverflow","hoursOverflow","daysOverflow","yearsOverflow","defineAttr","CHAR","VALUE_DELIMITER","PARAM_DELIMITER","PARAM_NAME_DELIMITER","DEFAULT_VALUE_TYPE$1","DEFAULT_PARAM_TYPE","RFC6868_REPLACE_MAP$1","root","line","ParserError","designSet","valuePos","paramPos","lastParamIndex","lastValuePos","params","parsedParams","newComponent","valueType","multiValue","structuredValue","propertyDetails","splitName","ungroupedName","lastParam","delim","lcname","mvdelim","extendedValue","propValuePos","nextPos","length_before","delimiter","buffer","innerMulti","lastPos","unescapedIndexOf","firstChar","newlineOffset","OPTIONS","Timezone$1","from_zone","to_zone","utcOffset","#utcTimezone","#localTimezone","change","jCal","tt_change","change_num","change_num_to_use","clone","zone_change","tmp_change","prev_zone_change","want_daylight","idx","binsearchInsert","today","changesEndYear","subcomps","compLen","compIdx","aComponent","changes","dtstart","convert_tzoffset","init_changes","changebase","rdate","rrule","iterator","occ","zones","utc","tzid","updateTimezones","vcal","allsubs","properties","vtimezones","reqTzid","comp","formatClassType","search","list","seekVal","cmpfunc","low","high","mid","cmpval","aSrc","aDeep","foldline","aLine","line_length","cp","ICALmodule","extend","descr","helpers","UtcOffset","instance","factor","VCardTime","aIcalType","part","parts","tmz","splitzone","tm","dtlen","tmlen","hasDashDate","hasDashTime","icaltype","mm","hasYear","hasMonth","hasDay","hasHour","hasMinute","hasSecond","datepart","timepart","RecurIterator","Recur","InvalidRecurrenceRuleError","wkdy","dayName","untilYear","tempLast","initLast","bydow","dayOfMonth","normalized","again","before","valid","inc","this_freq","end_of_data","week_no","rules","newRules","ruleIdx","rule","isInit","byMonthDay","byDay","dateIdx","dateLen","dayLen","dataIsValid","self","lastDay","initMonth","nextMonth","monthsCounter","next","dayIdx","data_valid","setpos","setpos_total","last_day","coded_day","matches","aRuleType","aInterval","aDateAttr","aFollowingAttr","aPreviousIncr","has_by_rule","dta","aFactor","aNextIncrement","nextunit","validWeeks","monthIdx","first_week","last_week","weekIdx","partCount","t1","t2","monthday","t3","first_dow","doy_offset","last_dow","by_month_day","spIndex","bydayParts","month_day","first_matching_day","last_matching_day","expandedDays","weekno","daysInYear","days_list","tmp","start_dow","end_dow","end_year_day","tmp_start_doy","first","this_dow","aRules","one","two","indexMapValue","ruleMapValue","pass","ruleType","bydata","weekNo","req","deftime","VALID_DAY_NAMES","VALID_BYDAY_PART","DOW_MAP","REVERSE_DOW_MAP","entry","ALLOWED_FREQ","fmtIcal","ucname","partDesign","partArr","partSet","optionDesign","aStart","aType","aValues","aStartTime","aRecurrenceId","uckey","k","kparts","parseNumericValue","Period","aProp","aLenient","fromDateOrDateTimeString","dateProp","FROM_ICAL_NEWLINE","TO_ICAL_NEWLINE","FROM_VCARD_NEWLINE","TO_VCARD_NEWLINE","createTextType","fromNewline","toNewline","structuredEscape","replaceNewline","regEx","DEFAULT_TYPE_TEXT","DEFAULT_TYPE_TEXT_MULTI","DEFAULT_TYPE_TEXT_STRUCTURED","DEFAULT_TYPE_INTEGER","DEFAULT_TYPE_DATETIME_DATE","DEFAULT_TYPE_DATETIME","DEFAULT_TYPE_URI","DEFAULT_TYPE_UTCOFFSET","DEFAULT_TYPE_RECUR","DEFAULT_TYPE_DATE_ANDOR_TIME","replaceNewlineReplace","newline","commonProperties","commonValues","parsed","icalParams","icalValues","aBinary","aRecur","icalProperties","vcardValues","isFromIcal","lastChar","signChar","vcardParams","vcardProperties","vcard3Values","vcard3Params","vcard3Properties","icalSet","vcardSet","vcard3Set","design","componentName","LINE_ENDING","DEFAULT_VALUE_TYPE","RFC6868_REPLACE_MAP","stringify","component","propIdx","propLen","designSetName","comps","property","noFold","jsName","groupName","paramName","paramDesign","propDetails","isDefault","force","NAME_INDEX$1","PROP_INDEX","TYPE_INDEX","VALUE_INDEX","Property","parent","p","designSetChanged","parameters","details","NAME_INDEX","PROPERTY_INDEX","COMPONENT_INDEX","jCalLen","jCalIndex","cache","nameOrObject","objects","cached","nameOrComp","removed","nameOrProp","hydratedZone","RecurExpansion","compare","maxTries","currentTry","toJSON","propertyName","iters","iterTime","iterIdx","chosenIter","Event","event","id","compareRangeException","rangeItem","occurrence","utcId","rangeExceptionId","exception","startDiff","original","newStart","startTime","endDate","propName","ComponentParser","ical","components","timezoneId","ics","ICAL","local","iCalComponent","version","aliases","tzData","TimezoneManager","level","includeAliases","timezones","aliasName","resolvedTimezone","pendingAliasName","timezoneManager","getTimezoneManager","register","t43","t25","getSortedTimezoneList","timezoneList","additionalTimezones","sortedByContinent","sortedList","continent","getReadableTimezoneName","additionalTimezone","label","getTimezoneManager$1","initialized","_sfc_main","NcSelect","GenRandomId","useModelMigration","timezoneManager2","timezonesGrouped","group","newValue","option","terms","region","term","_sfc_render","_sfc_staticRenderFns","__component__","NcTimezonePicker","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","_sfc_main$2","_sfc_render$2","_sfc_staticRenderFns$2","__component__$2","CalendarBlank","_sfc_main$1","_sfc_render$1","_sfc_staticRenderFns$1","__component__$1","Web","t38","formatMap","NcPopover","getMonthNames","getMonthNamesShort","getDayNames","getDayNamesShort","getDayNamesMin","getFirstDay","_a","firstThursday","yearStart","logger","$$v","slot","scope","NcDateTimePicker","ScopeComponent"],"mappings":"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Cb,EACE,uBAAwB,CACtB,QAAS,cACb,EACE,0BAA2B,CACzB,QAAS,gCACb,EACE,gBAAiB,CACf,QAAS,cACb,EACE,gBAAiB,CACf,QAAS,gBACb,EACE,eAAgB,CACd,QAAS,aACb,EACE,cAAe,CACb,QAAS,kBACb,EACE,yBAA0B,CACxB,QAAS,iBACb,EACE,kBAAmB,CACjB,QAAS,gBACb,EACE,qBAAsB,CACpB,QAAS,aACb,EACE,2BAA4B,CAC1B,QAAS,WACb,EACE,uBAAwB,CACtB,QAAS,iBACb,EACE,sBAAuB,CACrB,QAAS,eACb,EACE,2BAA4B,CAC1B,QAAS,YACb,EACE,wBAAyB,CACvB,QAAS,cACb,EACE,+BAAgC,CAC9B,QAAS,gBACb,EACE,2BAA4B,CAC1B,QAAS,qBACb,EACE,yBAA0B,CACxB,QAAS,cACb,EACE,+BAAgC,CAC9B,QAAS,oBACb,EACE,gCAAiC,CAC/B,QAAS,mBACb,EACE,6BAA8B,CAC5B,QAAS,aACb,EACE,kCAAmC,CACjC,QAAS,gBACb,EACE,+BAAgC,CAC9B,QAAS,iBACb,EACE,iCAAkC,CAChC,QAAS,eACb,EACE,gCAAiC,CAC/B,QAAS,qBACb,EACE,wBAAyB,CACvB,QAAS,iBACb,EACE,iCAAkC,CAChC,QAAS,qBACb,EACE,sBAAuB,CACrB,QAAS,eACb,EACE,0BAA2B,CACzB,QAAS,gBACb,EACE,6BAA8B,CAC5B,QAAS,oBACb,EACE,iCAAkC,CAChC,QAAS,mBACb,EACE,wBAAyB,CACvB,QAAS,kBACb,EACE,sBAAuB,CACrB,QAAS,cACb,EACE,6BAA8B,CAC5B,QAAS,oBACb,EACE,UAAW,CACT,QAAS,KACb,EACE,YAAa,CACX,QAAS,KACb,EACE,UAAW,CACT,QAAS,KACb,EACE,UAAW,CACT,QAAS,KACb,EACE,eAAgB,CACd,QAAS,KACb,EACE,WAAY,CACV,QAAS,KACb,EACE,iBAAkB,CAChB,QAAS,eACb,EACE,oBAAqB,CACnB,QAAS,aACb,EACE,qBAAsB,CACpB,QAAS,cACb,EACE,IAAK,CACH,QAAS,KACb,EACE,oBAAqB,CACnB,QAAS,eACb,EACE,QAAS,CACP,QAAS,KACb,EACE,KAAM,CACJ,QAAS,KACb,EACE,oBAAqB,CACnB,QAAS,kBACb,EACE,yBAA0B,CACxB,QAAS,cACb,EACE,0BAA2B,CACzB,QAAS,iBACb,EACE,UAAW,CACT,QAAS,KACb,EACE,0BAA2B,CACzB,QAAS,oBACb,EACE,yBAA0B,CACxB,QAAS,kBACb,EACE,sBAAuB,CACrB,QAAS,eACb,EACE,qBAAsB,CACpB,QAAS,aACb,EACE,uBAAwB,CACtB,QAAS,gBACb,EACE,uBAAwB,CACtB,QAAS,YACb,EACE,4BAA6B,CAC3B,QAAS,oBACb,EACE,sBAAuB,CACrB,QAAS,YACb,EACE,sBAAuB,CACrB,QAAS,gBACb,EACE,6BAA8B,CAC5B,QAAS,oBACb,EACE,wBAAyB,CACvB,QAAS,cACb,EACE,0BAA2B,CACzB,QAAS,kBACb,EACE,4BAA6B,CAC3B,QAAS,aACb,EACE,2BAA4B,CAC1B,QAAS,oBACb,EACE,wBAAyB,CACvB,QAAS,mBACb,EACE,yBAA0B,CACxB,QAAS,gBACb,EACE,kCAAmC,CACjC,QAAS,mBACb,EACE,wBAAyB,CACvB,QAAS,cACb,EACE,gCAAiC,CAC/B,QAAS,kBACb,EACE,wBAAyB,CACvB,QAAS,iBACb,EACE,sBAAuB,CACrB,QAAS,eACb,EACE,4BAA6B,CAC3B,QAAS,kBACb,EACE,6BAA8B,CAC5B,QAAS,kBACb,EACE,gCAAiC,CAC/B,QAAS,cACb,EACE,2BAA4B,CAC1B,QAAS,kBACb,EACE,2BAA4B,CAC1B,QAAS,kBACb,EACE,wBAAyB,CACvB,QAAS,qBACb,EACE,iCAAkC,CAChC,QAAS,sBACb,EACE,mBAAoB,CAClB,QAAS,kBACb,EACE,yBAA0B,CACxB,QAAS,cACb,EACE,yBAA0B,CACxB,QAAS,kBACb,EACE,wBAAyB,CACvB,QAAS,cACb,EACE,sBAAuB,CACrB,QAAS,oBACb,EACE,sBAAuB,CACrB,QAAS,gBACb,EACE,qBAAsB,CACpB,QAAS,eACb,EACE,wBA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]} \ No newline at end of file +{"version":3,"file":"NcDateTimePicker-CTU6-OE5.chunk.mjs","sources":["../node_modules/date-format-parse/es/util.js","../node_modules/date-format-parse/es/locale/en.js","../node_modules/date-format-parse/es/format.js","../node_modules/date-format-parse/es/parse.js","../node_modules/vue2-datepicker/index.esm.js","../node_modules/ical.js/dist/ical.js","../node_modules/@nextcloud/timezones/dist/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcTimezonePicker-D4y736xC.mjs","../node_modules/@nextcloud/vue/dist/Components/NcDateTimePicker.mjs"],"sourcesContent":["export function isDate(value) {\n return value instanceof Date || Object.prototype.toString.call(value) === '[object Date]';\n}\nexport function toDate(value) {\n if (isDate(value)) {\n return new Date(value.getTime());\n }\n\n if (value == null) {\n return new Date(NaN);\n }\n\n return new Date(value);\n}\nexport function isValidDate(value) {\n return isDate(value) && !isNaN(value.getTime());\n}\nexport function startOfWeek(value) {\n var firstDayOfWeek = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (!(firstDayOfWeek >= 0 && firstDayOfWeek <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6');\n }\n\n var date = toDate(value);\n var day = date.getDay();\n var diff = (day + 7 - firstDayOfWeek) % 7;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nexport function startOfWeekYear(value) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$firstDayOfWeek = _ref.firstDayOfWeek,\n firstDayOfWeek = _ref$firstDayOfWeek === void 0 ? 0 : _ref$firstDayOfWeek,\n _ref$firstWeekContain = _ref.firstWeekContainsDate,\n firstWeekContainsDate = _ref$firstWeekContain === void 0 ? 1 : _ref$firstWeekContain;\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7');\n }\n\n var date = toDate(value);\n var year = date.getFullYear();\n var firstDateOfFirstWeek = new Date(0);\n\n for (var i = year + 1; i >= year - 1; i--) {\n firstDateOfFirstWeek.setFullYear(i, 0, firstWeekContainsDate);\n firstDateOfFirstWeek.setHours(0, 0, 0, 0);\n firstDateOfFirstWeek = startOfWeek(firstDateOfFirstWeek, firstDayOfWeek);\n\n if (date.getTime() >= firstDateOfFirstWeek.getTime()) {\n break;\n }\n }\n\n return firstDateOfFirstWeek;\n}\nexport function getWeek(value) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$firstDayOfWeek = _ref2.firstDayOfWeek,\n firstDayOfWeek = _ref2$firstDayOfWeek === void 0 ? 0 : _ref2$firstDayOfWeek,\n _ref2$firstWeekContai = _ref2.firstWeekContainsDate,\n firstWeekContainsDate = _ref2$firstWeekContai === void 0 ? 1 : _ref2$firstWeekContai;\n\n var date = toDate(value);\n var firstDateOfThisWeek = startOfWeek(date, firstDayOfWeek);\n var firstDateOfFirstWeek = startOfWeekYear(date, {\n firstDayOfWeek: firstDayOfWeek,\n firstWeekContainsDate: firstWeekContainsDate\n });\n var diff = firstDateOfThisWeek.getTime() - firstDateOfFirstWeek.getTime();\n return Math.round(diff / (7 * 24 * 3600 * 1000)) + 1;\n}","var locale = {\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n firstDayOfWeek: 0,\n firstWeekContainsDate: 1\n};\nexport default locale;","import { toDate, isValidDate, getWeek } from './util';\nimport defaultLocale from './locale/en';\nvar REGEX_FORMAT = /\\[([^\\]]+)]|YYYY|YY?|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|Z{1,2}|S{1,3}|w{1,2}|x|X|a|A/g;\n\nfunction pad(val) {\n var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var output = \"\".concat(Math.abs(val));\n var sign = val < 0 ? '-' : '';\n\n while (output.length < len) {\n output = \"0\".concat(output);\n }\n\n return sign + output;\n}\n\nfunction getOffset(date) {\n return Math.round(date.getTimezoneOffset() / 15) * 15;\n}\n\nfunction formatTimezone(offset) {\n var delimeter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n return sign + pad(hours, 2) + delimeter + pad(minutes, 2);\n}\n\nvar meridiem = function meridiem(h, _, isLowercase) {\n var word = h < 12 ? 'AM' : 'PM';\n return isLowercase ? word.toLocaleLowerCase() : word;\n};\n\nvar formatFlags = {\n Y: function Y(date) {\n var y = date.getFullYear();\n return y <= 9999 ? \"\".concat(y) : \"+\".concat(y);\n },\n // Year: 00, 01, ..., 99\n YY: function YY(date) {\n return pad(date.getFullYear(), 4).substr(2);\n },\n // Year: 1900, 1901, ..., 2099\n YYYY: function YYYY(date) {\n return pad(date.getFullYear(), 4);\n },\n // Month: 1, 2, ..., 12\n M: function M(date) {\n return date.getMonth() + 1;\n },\n // Month: 01, 02, ..., 12\n MM: function MM(date) {\n return pad(date.getMonth() + 1, 2);\n },\n MMM: function MMM(date, locale) {\n return locale.monthsShort[date.getMonth()];\n },\n MMMM: function MMMM(date, locale) {\n return locale.months[date.getMonth()];\n },\n // Day of month: 1, 2, ..., 31\n D: function D(date) {\n return date.getDate();\n },\n // Day of month: 01, 02, ..., 31\n DD: function DD(date) {\n return pad(date.getDate(), 2);\n },\n // Hour: 0, 1, ... 23\n H: function H(date) {\n return date.getHours();\n },\n // Hour: 00, 01, ..., 23\n HH: function HH(date) {\n return pad(date.getHours(), 2);\n },\n // Hour: 1, 2, ..., 12\n h: function h(date) {\n var hours = date.getHours();\n\n if (hours === 0) {\n return 12;\n }\n\n if (hours > 12) {\n return hours % 12;\n }\n\n return hours;\n },\n // Hour: 01, 02, ..., 12\n hh: function hh() {\n var hours = formatFlags.h.apply(formatFlags, arguments);\n return pad(hours, 2);\n },\n // Minute: 0, 1, ..., 59\n m: function m(date) {\n return date.getMinutes();\n },\n // Minute: 00, 01, ..., 59\n mm: function mm(date) {\n return pad(date.getMinutes(), 2);\n },\n // Second: 0, 1, ..., 59\n s: function s(date) {\n return date.getSeconds();\n },\n // Second: 00, 01, ..., 59\n ss: function ss(date) {\n return pad(date.getSeconds(), 2);\n },\n // 1/10 of second: 0, 1, ..., 9\n S: function S(date) {\n return Math.floor(date.getMilliseconds() / 100);\n },\n // 1/100 of second: 00, 01, ..., 99\n SS: function SS(date) {\n return pad(Math.floor(date.getMilliseconds() / 10), 2);\n },\n // Millisecond: 000, 001, ..., 999\n SSS: function SSS(date) {\n return pad(date.getMilliseconds(), 3);\n },\n // Day of week: 0, 1, ..., 6\n d: function d(date) {\n return date.getDay();\n },\n // Day of week: 'Su', 'Mo', ..., 'Sa'\n dd: function dd(date, locale) {\n return locale.weekdaysMin[date.getDay()];\n },\n // Day of week: 'Sun', 'Mon',..., 'Sat'\n ddd: function ddd(date, locale) {\n return locale.weekdaysShort[date.getDay()];\n },\n // Day of week: 'Sunday', 'Monday', ...,'Saturday'\n dddd: function dddd(date, locale) {\n return locale.weekdays[date.getDay()];\n },\n // AM, PM\n A: function A(date, locale) {\n var meridiemFunc = locale.meridiem || meridiem;\n return meridiemFunc(date.getHours(), date.getMinutes(), false);\n },\n // am, pm\n a: function a(date, locale) {\n var meridiemFunc = locale.meridiem || meridiem;\n return meridiemFunc(date.getHours(), date.getMinutes(), true);\n },\n // Timezone: -01:00, +00:00, ... +12:00\n Z: function Z(date) {\n return formatTimezone(getOffset(date), ':');\n },\n // Timezone: -0100, +0000, ... +1200\n ZZ: function ZZ(date) {\n return formatTimezone(getOffset(date));\n },\n // Seconds timestamp: 512969520\n X: function X(date) {\n return Math.floor(date.getTime() / 1000);\n },\n // Milliseconds timestamp: 512969520900\n x: function x(date) {\n return date.getTime();\n },\n w: function w(date, locale) {\n return getWeek(date, {\n firstDayOfWeek: locale.firstDayOfWeek,\n firstWeekContainsDate: locale.firstWeekContainsDate\n });\n },\n ww: function ww(date, locale) {\n return pad(formatFlags.w(date, locale), 2);\n }\n};\nexport function format(val, str) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var formatStr = str ? String(str) : 'YYYY-MM-DDTHH:mm:ss.SSSZ';\n var date = toDate(val);\n\n if (!isValidDate(date)) {\n return 'Invalid Date';\n }\n\n var locale = options.locale || defaultLocale;\n return formatStr.replace(REGEX_FORMAT, function (match, p1) {\n if (p1) {\n return p1;\n }\n\n if (typeof formatFlags[match] === 'function') {\n return \"\".concat(formatFlags[match](date, locale));\n }\n\n return match;\n });\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport defaultLocale from './locale/en';\nimport { startOfWeekYear } from './util';\nvar formattingTokens = /(\\[[^\\[]*\\])|(MM?M?M?|Do|DD?|ddd?d?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|S{1,3}|x|X|ZZ?|.)/g;\nvar match1 = /\\d/; // 0 - 9\n\nvar match2 = /\\d\\d/; // 00 - 99\n\nvar match3 = /\\d{3}/; // 000 - 999\n\nvar match4 = /\\d{4}/; // 0000 - 9999\n\nvar match1to2 = /\\d\\d?/; // 0 - 99\n\nvar matchShortOffset = /[+-]\\d\\d:?\\d\\d/; // +00:00 -00:00 +0000 or -0000\n\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n// const matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i; // Word\n\nvar YEAR = 'year';\nvar MONTH = 'month';\nvar DAY = 'day';\nvar HOUR = 'hour';\nvar MINUTE = 'minute';\nvar SECOND = 'second';\nvar MILLISECOND = 'millisecond';\nvar parseFlags = {};\n\nvar addParseFlag = function addParseFlag(token, regex, callback) {\n var tokens = Array.isArray(token) ? token : [token];\n var func;\n\n if (typeof callback === 'string') {\n func = function func(input) {\n var value = parseInt(input, 10);\n return _defineProperty({}, callback, value);\n };\n } else {\n func = callback;\n }\n\n tokens.forEach(function (key) {\n parseFlags[key] = [regex, func];\n });\n};\n\nvar escapeStringRegExp = function escapeStringRegExp(str) {\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n};\n\nvar matchWordRegExp = function matchWordRegExp(localeKey) {\n return function (locale) {\n var array = locale[localeKey];\n\n if (!Array.isArray(array)) {\n throw new Error(\"Locale[\".concat(localeKey, \"] need an array\"));\n }\n\n return new RegExp(array.map(escapeStringRegExp).join('|'));\n };\n};\n\nvar matchWordCallback = function matchWordCallback(localeKey, key) {\n return function (input, locale) {\n var array = locale[localeKey];\n\n if (!Array.isArray(array)) {\n throw new Error(\"Locale[\".concat(localeKey, \"] need an array\"));\n }\n\n var index = array.indexOf(input);\n\n if (index < 0) {\n throw new Error('Invalid Word');\n }\n\n return _defineProperty({}, key, index);\n };\n};\n\naddParseFlag('Y', matchSigned, YEAR);\naddParseFlag('YY', match2, function (input) {\n var year = new Date().getFullYear();\n var cent = Math.floor(year / 100);\n var value = parseInt(input, 10);\n value = (value > 68 ? cent - 1 : cent) * 100 + value;\n return _defineProperty({}, YEAR, value);\n});\naddParseFlag('YYYY', match4, YEAR);\naddParseFlag('M', match1to2, function (input) {\n return _defineProperty({}, MONTH, parseInt(input, 10) - 1);\n});\naddParseFlag('MM', match2, function (input) {\n return _defineProperty({}, MONTH, parseInt(input, 10) - 1);\n});\naddParseFlag('MMM', matchWordRegExp('monthsShort'), matchWordCallback('monthsShort', MONTH));\naddParseFlag('MMMM', matchWordRegExp('months'), matchWordCallback('months', MONTH));\naddParseFlag('D', match1to2, DAY);\naddParseFlag('DD', match2, DAY);\naddParseFlag(['H', 'h'], match1to2, HOUR);\naddParseFlag(['HH', 'hh'], match2, HOUR);\naddParseFlag('m', match1to2, MINUTE);\naddParseFlag('mm', match2, MINUTE);\naddParseFlag('s', match1to2, SECOND);\naddParseFlag('ss', match2, SECOND);\naddParseFlag('S', match1, function (input) {\n return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 100);\n});\naddParseFlag('SS', match2, function (input) {\n return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 10);\n});\naddParseFlag('SSS', match3, MILLISECOND);\n\nfunction matchMeridiem(locale) {\n return locale.meridiemParse || /[ap]\\.?m?\\.?/i;\n}\n\nfunction defaultIsPM(input) {\n return \"\".concat(input).toLowerCase().charAt(0) === 'p';\n}\n\naddParseFlag(['A', 'a'], matchMeridiem, function (input, locale) {\n var isPM = typeof locale.isPM === 'function' ? locale.isPM(input) : defaultIsPM(input);\n return {\n isPM: isPM\n };\n});\n\nfunction offsetFromString(str) {\n var _ref8 = str.match(/([+-]|\\d\\d)/g) || ['-', '0', '0'],\n _ref9 = _slicedToArray(_ref8, 3),\n symbol = _ref9[0],\n hour = _ref9[1],\n minute = _ref9[2];\n\n var minutes = parseInt(hour, 10) * 60 + parseInt(minute, 10);\n\n if (minutes === 0) {\n return 0;\n }\n\n return symbol === '+' ? -minutes : +minutes;\n}\n\naddParseFlag(['Z', 'ZZ'], matchShortOffset, function (input) {\n return {\n offset: offsetFromString(input)\n };\n});\naddParseFlag('x', matchSigned, function (input) {\n return {\n date: new Date(parseInt(input, 10))\n };\n});\naddParseFlag('X', matchTimestamp, function (input) {\n return {\n date: new Date(parseFloat(input) * 1000)\n };\n});\naddParseFlag('d', match1, 'weekday');\naddParseFlag('dd', matchWordRegExp('weekdaysMin'), matchWordCallback('weekdaysMin', 'weekday'));\naddParseFlag('ddd', matchWordRegExp('weekdaysShort'), matchWordCallback('weekdaysShort', 'weekday'));\naddParseFlag('dddd', matchWordRegExp('weekdays'), matchWordCallback('weekdays', 'weekday'));\naddParseFlag('w', match1to2, 'week');\naddParseFlag('ww', match2, 'week');\n\nfunction to24hour(hour, isPM) {\n if (hour !== undefined && isPM !== undefined) {\n if (isPM) {\n if (hour < 12) {\n return hour + 12;\n }\n } else if (hour === 12) {\n return 0;\n }\n }\n\n return hour;\n}\n\nfunction getFullInputArray(input) {\n var backupDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date();\n var result = [0, 0, 1, 0, 0, 0, 0];\n var backupArr = [backupDate.getFullYear(), backupDate.getMonth(), backupDate.getDate(), backupDate.getHours(), backupDate.getMinutes(), backupDate.getSeconds(), backupDate.getMilliseconds()];\n var useBackup = true;\n\n for (var i = 0; i < 7; i++) {\n if (input[i] === undefined) {\n result[i] = useBackup ? backupArr[i] : result[i];\n } else {\n result[i] = input[i];\n useBackup = false;\n }\n }\n\n return result;\n}\n\nfunction createDate(y, m, d, h, M, s, ms) {\n var date;\n\n if (y < 100 && y >= 0) {\n date = new Date(y + 400, m, d, h, M, s, ms);\n\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n}\n\nfunction createUTCDate() {\n var date;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var y = args[0];\n\n if (y < 100 && y >= 0) {\n args[0] += 400;\n date = new Date(Date.UTC.apply(Date, args)); // eslint-disable-next-line no-restricted-globals\n\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(Date, args));\n }\n\n return date;\n}\n\nfunction makeParser(dateString, format, locale) {\n var tokens = format.match(formattingTokens);\n\n if (!tokens) {\n throw new Error();\n }\n\n var length = tokens.length;\n var mark = {};\n\n for (var i = 0; i < length; i += 1) {\n var token = tokens[i];\n var parseTo = parseFlags[token];\n\n if (!parseTo) {\n var word = token.replace(/^\\[|\\]$/g, '');\n\n if (dateString.indexOf(word) === 0) {\n dateString = dateString.substr(word.length);\n } else {\n throw new Error('not match');\n }\n } else {\n var regex = typeof parseTo[0] === 'function' ? parseTo[0](locale) : parseTo[0];\n var parser = parseTo[1];\n var value = (regex.exec(dateString) || [])[0];\n var obj = parser(value, locale);\n mark = _objectSpread({}, mark, {}, obj);\n dateString = dateString.replace(value, '');\n }\n }\n\n return mark;\n}\n\nexport function parse(str, format) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n try {\n var _options$locale = options.locale,\n _locale = _options$locale === void 0 ? defaultLocale : _options$locale,\n _options$backupDate = options.backupDate,\n backupDate = _options$backupDate === void 0 ? new Date() : _options$backupDate;\n\n var parseResult = makeParser(str, format, _locale);\n var year = parseResult.year,\n month = parseResult.month,\n day = parseResult.day,\n hour = parseResult.hour,\n minute = parseResult.minute,\n second = parseResult.second,\n millisecond = parseResult.millisecond,\n isPM = parseResult.isPM,\n date = parseResult.date,\n offset = parseResult.offset,\n weekday = parseResult.weekday,\n week = parseResult.week;\n\n if (date) {\n return date;\n }\n\n var inputArray = [year, month, day, hour, minute, second, millisecond];\n inputArray[3] = to24hour(inputArray[3], isPM); // check week\n\n if (week !== undefined && month === undefined && day === undefined) {\n // new Date(year, 3) make sure in current year\n var firstDate = startOfWeekYear(year === undefined ? backupDate : new Date(year, 3), {\n firstDayOfWeek: _locale.firstDayOfWeek,\n firstWeekContainsDate: _locale.firstWeekContainsDate\n });\n return new Date(firstDate.getTime() + (week - 1) * 7 * 24 * 3600 * 1000);\n }\n\n var parsedDate;\n var result = getFullInputArray(inputArray, backupDate);\n\n if (offset !== undefined) {\n result[6] += offset * 60 * 1000;\n parsedDate = createUTCDate.apply(void 0, _toConsumableArray(result));\n } else {\n parsedDate = createDate.apply(void 0, _toConsumableArray(result));\n } // check weekday\n\n\n if (weekday !== undefined && parsedDate.getDay() !== weekday) {\n return new Date(NaN);\n }\n\n return parsedDate;\n } catch (e) {\n return new Date(NaN);\n }\n}","import { getWeek, format, parse } from 'date-format-parse';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _extends$1() {\n return _extends$1 = Object.assign || function (a) {\n for (var b, c = 1; c < arguments.length; c++) {\n for (var d in b = arguments[c], b) {\n Object.prototype.hasOwnProperty.call(b, d) && (a[d] = b[d]);\n }\n }\n\n return a;\n }, _extends$1.apply(this, arguments);\n}\n\nvar normalMerge = [\"attrs\", \"props\", \"domProps\"],\n toArrayMerge = [\"class\", \"style\", \"directives\"],\n functionalMerge = [\"on\", \"nativeOn\"],\n mergeJsxProps = function mergeJsxProps(a) {\n return a.reduce(function (c, a) {\n for (var b in a) {\n if (!c[b]) c[b] = a[b];else if (-1 !== normalMerge.indexOf(b)) c[b] = _extends$1({}, c[b], a[b]);else if (-1 !== toArrayMerge.indexOf(b)) {\n var d = c[b] instanceof Array ? c[b] : [c[b]],\n e = a[b] instanceof Array ? a[b] : [a[b]];\n c[b] = d.concat(e);\n } else if (-1 !== functionalMerge.indexOf(b)) {\n for (var f in a[b]) {\n if (c[b][f]) {\n var g = c[b][f] instanceof Array ? c[b][f] : [c[b][f]],\n h = a[b][f] instanceof Array ? a[b][f] : [a[b][f]];\n c[b][f] = g.concat(h);\n } else c[b][f] = a[b][f];\n }\n } else if (\"hook\" == b) for (var i in a[b]) {\n c[b][i] = c[b][i] ? mergeFn(c[b][i], a[b][i]) : a[b][i];\n } else c[b] = a[b];\n }\n\n return c;\n }, {});\n},\n mergeFn = function mergeFn(a, b) {\n return function () {\n a && a.apply(this, arguments), b && b.apply(this, arguments);\n };\n};\n\nvar helper = mergeJsxProps;\n\n// new Date(10, 0, 1) The year from 0 to 99 will be incremented by 1900 automatically.\nfunction createDate(y) {\n var M = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var d = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var h = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var m = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var s = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n var ms = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;\n var date = new Date(y, M, d, h, m, s, ms);\n\n if (y < 100 && y >= 0) {\n date.setFullYear(y);\n }\n\n return date;\n}\nfunction isValidDate(date) {\n return date instanceof Date && !isNaN(date);\n}\nfunction isValidRangeDate(date) {\n return Array.isArray(date) && date.length === 2 && date.every(isValidDate) && date[0] <= date[1];\n}\nfunction isValidDates(dates) {\n return Array.isArray(dates) && dates.every(isValidDate);\n}\nfunction getValidDate(value) {\n var date = new Date(value);\n\n if (isValidDate(date)) {\n return date;\n }\n\n for (var _len = arguments.length, backup = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n backup[_key - 1] = arguments[_key];\n }\n\n if (backup.length) {\n return getValidDate.apply(void 0, backup);\n }\n\n return new Date();\n}\nfunction startOfYear(value) {\n var date = new Date(value);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction startOfMonth(value) {\n var date = new Date(value);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction startOfDay(value) {\n var date = new Date(value);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction getCalendar(_ref) {\n var firstDayOfWeek = _ref.firstDayOfWeek,\n year = _ref.year,\n month = _ref.month;\n var arr = []; // change to the last day of the last month\n\n var calendar = createDate(year, month, 0);\n var lastDayInLastMonth = calendar.getDate(); // getDay() 0 is Sunday, 1 is Monday\n\n var firstDayInLastMonth = lastDayInLastMonth - (calendar.getDay() + 7 - firstDayOfWeek) % 7;\n\n for (var i = firstDayInLastMonth; i <= lastDayInLastMonth; i++) {\n arr.push(createDate(year, month, i - lastDayInLastMonth));\n } // change to the last day of the current month\n\n\n calendar.setMonth(month + 1, 0);\n var lastDayInCurrentMonth = calendar.getDate();\n\n for (var _i = 1; _i <= lastDayInCurrentMonth; _i++) {\n arr.push(createDate(year, month, _i));\n }\n\n var lastMonthLength = lastDayInLastMonth - firstDayInLastMonth + 1;\n var nextMonthLength = 6 * 7 - lastMonthLength - lastDayInCurrentMonth;\n\n for (var _i2 = 1; _i2 <= nextMonthLength; _i2++) {\n arr.push(createDate(year, month, lastDayInCurrentMonth + _i2));\n }\n\n return arr;\n}\nfunction setMonth(dirtyDate, dirtyMonth) {\n var date = new Date(dirtyDate);\n var month = typeof dirtyMonth === 'function' ? dirtyMonth(date.getMonth()) : Number(dirtyMonth);\n var year = date.getFullYear();\n var daysInMonth = createDate(year, month + 1, 0).getDate();\n var day = date.getDate();\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}\nfunction setYear(dirtyDate, dirtyYear) {\n var date = new Date(dirtyDate);\n var year = typeof dirtyYear === 'function' ? dirtyYear(date.getFullYear()) : dirtyYear;\n date.setFullYear(year);\n return date;\n}\nfunction assignTime(target, source) {\n var date = new Date(target);\n var time = new Date(source);\n date.setHours(time.getHours(), time.getMinutes(), time.getSeconds());\n return date;\n}\n\n/**\n * chunk the array\n * @param {Array} arr\n * @param {Number} size\n */\nfunction chunk(arr, size) {\n if (!Array.isArray(arr)) {\n return [];\n }\n\n var result = [];\n var len = arr.length;\n var i = 0;\n size = size || len;\n\n while (i < len) {\n result.push(arr.slice(i, i += size));\n }\n\n return result;\n}\n/**\n * isObject\n * @param {*} obj\n * @returns {Boolean}\n */\n\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\n/**\n * pick object\n * @param {Object} obj\n * @param {Array|String} props\n */\n\nfunction pick(obj, props) {\n if (!isObject(obj)) return {};\n\n if (!Array.isArray(props)) {\n props = [props];\n }\n\n var res = {};\n props.forEach(function (prop) {\n if (prop in obj) {\n res[prop] = obj[prop];\n }\n });\n return res;\n}\n/**\n * deep merge two object without merging array\n * @param {object} target\n * @param {object} source\n */\n\nfunction mergeDeep(target, source) {\n if (!isObject(target)) {\n return {};\n }\n\n var result = target;\n\n if (isObject(source)) {\n Object.keys(source).forEach(function (key) {\n var value = source[key];\n\n if (isObject(value) && isObject(target[key])) {\n value = mergeDeep(target[key], value);\n }\n\n result = _objectSpread2({}, result, _defineProperty({}, key, value));\n });\n }\n\n return result;\n}\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar en = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar locale = {\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n firstDayOfWeek: 0,\n firstWeekContainsDate: 1\n};\nvar _default = locale;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n});\n\nvar en$1 = unwrapExports(en);\n\nvar lang = {\n formatLocale: en$1,\n yearFormat: 'YYYY',\n monthFormat: 'MMM',\n monthBeforeYear: true\n};\n\nvar defaultLocale = 'en';\nvar locales = {};\nlocales[defaultLocale] = lang;\nfunction locale(name, object, isLocal) {\n if (typeof name !== 'string') return locales[defaultLocale];\n var l = defaultLocale;\n\n if (locales[name]) {\n l = name;\n }\n\n if (object) {\n locales[name] = object;\n l = name;\n }\n\n if (!isLocal) {\n defaultLocale = l;\n }\n\n return locales[name] || locales[defaultLocale];\n}\n/**\n * get locale object\n * @param {string} name lang\n */\n\nfunction getLocale(name) {\n return locale(name, null, true);\n}\n\n/* istanbul ignore file */\nfunction rafThrottle(fn) {\n var isRunning = false;\n return function fnBinfRaf() {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (isRunning) return;\n isRunning = true;\n requestAnimationFrame(function () {\n isRunning = false;\n fn.apply(_this, args);\n });\n };\n}\n\n/**\n * get the hidden element width, height\n * @param {HTMLElement} element dom\n */\nfunction getPopupElementSize(element) {\n var originalDisplay = element.style.display;\n var originalVisibility = element.style.visibility;\n element.style.display = 'block';\n element.style.visibility = 'hidden';\n var styles = window.getComputedStyle(element);\n var width = element.offsetWidth + parseInt(styles.marginLeft, 10) + parseInt(styles.marginRight, 10);\n var height = element.offsetHeight + parseInt(styles.marginTop, 10) + parseInt(styles.marginBottom, 10);\n element.style.display = originalDisplay;\n element.style.visibility = originalVisibility;\n return {\n width: width,\n height: height\n };\n}\n/**\n * get the popup position\n * @param {HTMLElement} el relative element\n * @param {Number} targetWidth target element's width\n * @param {Number} targetHeight target element's height\n * @param {Boolean} fixed\n */\n\nfunction getRelativePosition(el, targetWidth, targetHeight, fixed) {\n var left = 0;\n var top = 0;\n var offsetX = 0;\n var offsetY = 0;\n var relativeRect = el.getBoundingClientRect();\n var dw = document.documentElement.clientWidth;\n var dh = document.documentElement.clientHeight;\n\n if (fixed) {\n offsetX = window.pageXOffset + relativeRect.left;\n offsetY = window.pageYOffset + relativeRect.top;\n }\n\n if (dw - relativeRect.left < targetWidth && relativeRect.right < targetWidth) {\n left = offsetX - relativeRect.left + 1;\n } else if (relativeRect.left + relativeRect.width / 2 <= dw / 2) {\n left = offsetX;\n } else {\n left = offsetX + relativeRect.width - targetWidth;\n }\n\n if (relativeRect.top <= targetHeight && dh - relativeRect.bottom <= targetHeight) {\n top = offsetY + dh - relativeRect.top - targetHeight;\n } else if (relativeRect.top + relativeRect.height / 2 <= dh / 2) {\n top = offsetY + relativeRect.height;\n } else {\n top = offsetY - targetHeight;\n }\n\n return {\n left: \"\".concat(left, \"px\"),\n top: \"\".concat(top, \"px\")\n };\n}\nfunction getScrollParent(node) {\n var until = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.body;\n\n if (!node || node === until) {\n return null;\n }\n\n var style = function style(value, prop) {\n return getComputedStyle(value, null).getPropertyValue(prop);\n };\n\n var regex = /(auto|scroll)/;\n var scroll = regex.test(style(node, 'overflow') + style(node, 'overflow-y') + style(node, 'overflow-x'));\n return scroll ? node : getScrollParent(node.parentNode, until);\n}\n\n//\nvar script = {\n name: 'Popup',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n visible: {\n type: Boolean,\n default: false\n },\n appendToBody: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n top: '',\n left: ''\n };\n },\n watch: {\n visible: {\n immediate: true,\n handler: function handler(val) {\n var _this = this;\n\n this.$nextTick(function () {\n if (val) {\n _this.displayPopup();\n }\n });\n }\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n if (this.appendToBody) {\n document.body.appendChild(this.$el);\n }\n\n this._clickoutEvent = 'ontouchend' in document ? 'touchstart' : 'mousedown';\n document.addEventListener(this._clickoutEvent, this.handleClickOutside); // change the popup position when resize or scroll\n\n var relativeElement = this.$parent.$el;\n this._displayPopup = rafThrottle(function () {\n return _this2.displayPopup();\n });\n this._scrollParent = getScrollParent(relativeElement) || window;\n\n this._scrollParent.addEventListener('scroll', this._displayPopup);\n\n window.addEventListener('resize', this._displayPopup);\n },\n beforeDestroy: function beforeDestroy() {\n if (this.appendToBody && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n\n document.removeEventListener(this._clickoutEvent, this.handleClickOutside);\n\n this._scrollParent.removeEventListener('scroll', this._displayPopup);\n\n window.removeEventListener('resize', this._displayPopup);\n },\n methods: {\n handleClickOutside: function handleClickOutside(evt) {\n if (!this.visible) return;\n var target = evt.target;\n var el = this.$el;\n\n if (el && !el.contains(target)) {\n this.$emit('clickoutside', evt);\n }\n },\n displayPopup: function displayPopup() {\n if (!this.visible) return;\n var popup = this.$el;\n var relativeElement = this.$parent.$el;\n var appendToBody = this.appendToBody;\n\n if (!this._popupRect) {\n this._popupRect = getPopupElementSize(popup);\n }\n\n var _this$_popupRect = this._popupRect,\n width = _this$_popupRect.width,\n height = _this$_popupRect.height;\n\n var _getRelativePosition = getRelativePosition(relativeElement, width, height, appendToBody),\n left = _getRelativePosition.left,\n top = _getRelativePosition.top;\n\n this.left = left;\n this.top = top;\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n/* server only */\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n } // Vue.extend constructor export interop.\n\n\n var options = typeof script === 'function' ? script.options : script; // render functions\n\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true; // functional template\n\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n } // scopedId\n\n\n if (scopeId) {\n options._scopeId = scopeId;\n }\n\n var hook;\n\n if (moduleIdentifier) {\n // server build\n hook = function hook(context) {\n // 2.3 injection\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n } // inject component styles\n\n\n if (style) {\n style.call(this, createInjectorSSR(context));\n } // register component module identifier for async chunk inference\n\n\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n }; // used by ssr in case component is cached and beforeCreate\n // never gets called\n\n\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function (context) {\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n var originalRender = options.render;\n\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n\n return script;\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('transition', {\n attrs: {\n \"name\": _vm.prefixClass + \"-zoom-in-down\"\n }\n }, [_vm.visible ? _c('div', {\n class: _vm.prefixClass + \"-datepicker-main \" + _vm.prefixClass + \"-datepicker-popup\",\n style: {\n top: _vm.top,\n left: _vm.left,\n position: 'absolute'\n }\n }, [_vm._t(\"default\")], 2) : _vm._e()]);\n};\n\nvar __vue_staticRenderFns__ = [];\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ = normalizeComponent({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\n/* script */\n\n/* template */\nvar __vue_render__$1 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('svg', {\n attrs: {\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": \"0 0 1024 1024\",\n \"width\": \"1em\",\n \"height\": \"1em\"\n }\n }, [_c('path', {\n attrs: {\n \"d\": \"M940.218182 107.054545h-209.454546V46.545455h-65.163636v60.50909H363.054545V46.545455H297.890909v60.50909H83.781818c-18.618182 0-32.581818 13.963636-32.581818 32.581819v805.236363c0 18.618182 13.963636 32.581818 32.581818 32.581818h861.090909c18.618182 0 32.581818-13.963636 32.581818-32.581818V139.636364c-4.654545-18.618182-18.618182-32.581818-37.236363-32.581819zM297.890909 172.218182V232.727273h65.163636V172.218182h307.2V232.727273h65.163637V172.218182h176.872727v204.8H116.363636V172.218182h181.527273zM116.363636 912.290909V442.181818h795.927273v470.109091H116.363636z\"\n }\n })]);\n};\n\nvar __vue_staticRenderFns__$1 = [];\n/* style */\n\nvar __vue_inject_styles__$1 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$1 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$1 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$1 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$1 = normalizeComponent({\n render: __vue_render__$1,\n staticRenderFns: __vue_staticRenderFns__$1\n}, __vue_inject_styles__$1, {}, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, false, undefined, undefined, undefined);\n\n/* script */\n\n/* template */\nvar __vue_render__$2 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('svg', {\n attrs: {\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": \"0 0 24 24\",\n \"width\": \"1em\",\n \"height\": \"1em\"\n }\n }, [_c('path', {\n attrs: {\n \"d\": \"M0 0h24v24H0z\",\n \"fill\": \"none\"\n }\n }), _vm._v(\" \"), _c('path', {\n attrs: {\n \"d\": \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }\n }), _vm._v(\" \"), _c('path', {\n attrs: {\n \"d\": \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n }\n })]);\n};\n\nvar __vue_staticRenderFns__$2 = [];\n/* style */\n\nvar __vue_inject_styles__$2 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$2 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$2 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$2 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$2 = normalizeComponent({\n render: __vue_render__$2,\n staticRenderFns: __vue_staticRenderFns__$2\n}, __vue_inject_styles__$2, {}, __vue_scope_id__$2, __vue_is_functional_template__$2, __vue_module_identifier__$2, false, undefined, undefined, undefined);\n\n/* script */\n\n/* template */\nvar __vue_render__$3 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('svg', {\n attrs: {\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": \"0 0 1024 1024\",\n \"width\": \"1em\",\n \"height\": \"1em\"\n }\n }, [_c('path', {\n attrs: {\n \"d\": \"M810.005333 274.005333l-237.994667 237.994667 237.994667 237.994667-60.010667 60.010667-237.994667-237.994667-237.994667 237.994667-60.010667-60.010667 237.994667-237.994667-237.994667-237.994667 60.010667-60.010667 237.994667 237.994667 237.994667-237.994667z\"\n }\n })]);\n};\n\nvar __vue_staticRenderFns__$3 = [];\n/* style */\n\nvar __vue_inject_styles__$3 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$3 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$3 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$3 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$3 = normalizeComponent({\n render: __vue_render__$3,\n staticRenderFns: __vue_staticRenderFns__$3\n}, __vue_inject_styles__$3, {}, __vue_scope_id__$3, __vue_is_functional_template__$3, __vue_module_identifier__$3, false, undefined, undefined, undefined);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar script$1 = {\n props: {\n type: String,\n disabled: Boolean\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n }\n};\n\n/* script */\nvar __vue_script__$1 = script$1;\n/* template */\n\nvar __vue_render__$4 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('button', _vm._g({\n class: [_vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text \" + _vm.prefixClass + \"-btn-icon-\" + _vm.type, {\n disabled: _vm.disabled\n }],\n attrs: {\n \"type\": \"button\",\n \"disabled\": _vm.disabled\n }\n }, _vm.$listeners), [_c('i', {\n class: _vm.prefixClass + \"-icon-\" + _vm.type\n })]);\n};\n\nvar __vue_staticRenderFns__$4 = [];\n/* style */\n\nvar __vue_inject_styles__$4 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$4 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$4 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$4 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$4 = normalizeComponent({\n render: __vue_render__$4,\n staticRenderFns: __vue_staticRenderFns__$4\n}, __vue_inject_styles__$4, __vue_script__$1, __vue_scope_id__$4, __vue_is_functional_template__$4, __vue_module_identifier__$4, false, undefined, undefined, undefined);\n\nvar script$2 = {\n name: 'TableDate',\n components: {\n IconButton: __vue_component__$4\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n getWeek: {\n default: function _default() {\n return getWeek;\n }\n },\n prefixClass: {\n default: 'mx'\n },\n onDateMouseEnter: {\n default: undefined\n },\n onDateMouseLeave: {\n default: undefined\n }\n },\n props: {\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n calendar: {\n type: Date,\n default: function _default() {\n return new Date();\n }\n },\n showWeekNumber: {\n type: Boolean,\n default: false\n },\n titleFormat: {\n type: String,\n default: 'YYYY-MM-DD'\n },\n getRowClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n getCellClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n firstDayOfWeek: function firstDayOfWeek() {\n return this.getLocale().formatLocale.firstDayOfWeek || 0;\n },\n yearMonth: function yearMonth() {\n var _this$getLocale = this.getLocale(),\n yearFormat = _this$getLocale.yearFormat,\n monthBeforeYear = _this$getLocale.monthBeforeYear,\n _this$getLocale$month = _this$getLocale.monthFormat,\n monthFormat = _this$getLocale$month === void 0 ? 'MMM' : _this$getLocale$month;\n\n var yearLabel = {\n panel: 'year',\n label: this.formatDate(this.calendar, yearFormat)\n };\n var monthLabel = {\n panel: 'month',\n label: this.formatDate(this.calendar, monthFormat)\n };\n return monthBeforeYear ? [monthLabel, yearLabel] : [yearLabel, monthLabel];\n },\n days: function days() {\n var locale = this.getLocale();\n var days = locale.days || locale.formatLocale.weekdaysMin;\n return days.concat(days).slice(this.firstDayOfWeek, this.firstDayOfWeek + 7);\n },\n dates: function dates() {\n var year = this.calendar.getFullYear();\n var month = this.calendar.getMonth();\n var arr = getCalendar({\n firstDayOfWeek: this.firstDayOfWeek,\n year: year,\n month: month\n });\n return chunk(arr, 7);\n }\n },\n methods: {\n isDisabledArrows: function isDisabledArrows(type) {\n var date = new Date(this.calendar);\n\n switch (type) {\n case 'last-year':\n date.setFullYear(date.getFullYear() - 1, date.getMonth() + 1, 0);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-year':\n date.setFullYear(date.getFullYear() + 1);\n break;\n\n case 'last-month':\n date.setMonth(date.getMonth(), 0);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-month':\n date.setMonth(date.getMonth() + 1);\n break;\n }\n\n return this.disabledCalendarChanger(date, type);\n },\n handleIconLeftClick: function handleIconLeftClick() {\n this.$emit('changecalendar', setMonth(this.calendar, function (v) {\n return v - 1;\n }), 'last-month');\n },\n handleIconRightClick: function handleIconRightClick() {\n this.$emit('changecalendar', setMonth(this.calendar, function (v) {\n return v + 1;\n }), 'next-month');\n },\n handleIconDoubleLeftClick: function handleIconDoubleLeftClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v - 1;\n }), 'last-year');\n },\n handleIconDoubleRightClick: function handleIconDoubleRightClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v + 1;\n }), 'next-year');\n },\n handlePanelChange: function handlePanelChange(panel) {\n this.$emit('changepanel', panel);\n },\n handleMouseEnter: function handleMouseEnter(cell) {\n if (typeof this.onDateMouseEnter === 'function') {\n this.onDateMouseEnter(cell);\n }\n },\n handleMouseLeave: function handleMouseLeave(cell) {\n if (typeof this.onDateMouseLeave === 'function') {\n this.onDateMouseLeave(cell);\n }\n },\n handleCellClick: function handleCellClick(evt) {\n var target = evt.target;\n\n if (target.tagName.toUpperCase() === 'DIV') {\n target = target.parentNode;\n }\n\n var index = target.getAttribute('data-row-col');\n\n if (index) {\n var _index$split$map = index.split(',').map(function (v) {\n return parseInt(v, 10);\n }),\n _index$split$map2 = _slicedToArray(_index$split$map, 2),\n row = _index$split$map2[0],\n col = _index$split$map2[1];\n\n var date = this.dates[row][col];\n this.$emit('select', new Date(date));\n }\n },\n formatDate: function formatDate(date, fmt) {\n return format(date, fmt, {\n locale: this.getLocale().formatLocale\n });\n },\n getCellTitle: function getCellTitle(date) {\n var fmt = this.titleFormat;\n return this.formatDate(date, fmt);\n },\n getWeekNumber: function getWeekNumber(date) {\n return this.getWeek(date, this.getLocale().formatLocale);\n }\n }\n};\n\n/* script */\nvar __vue_script__$2 = script$2;\n/* template */\n\nvar __vue_render__$5 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-calendar \" + _vm.prefixClass + \"-calendar-panel-date\"\n }, [_c('div', {\n class: _vm.prefixClass + \"-calendar-header\"\n }, [_c('icon-button', {\n attrs: {\n \"type\": \"double-left\",\n \"disabled\": _vm.isDisabledArrows('last-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"left\",\n \"disabled\": _vm.isDisabledArrows('last-month')\n },\n on: {\n \"click\": _vm.handleIconLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"double-right\",\n \"disabled\": _vm.isDisabledArrows('next-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleRightClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"right\",\n \"disabled\": _vm.isDisabledArrows('next-month')\n },\n on: {\n \"click\": _vm.handleIconRightClick\n }\n }), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-header-label\"\n }, _vm._l(_vm.yearMonth, function (item) {\n return _c('button', {\n key: item.panel,\n class: _vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text \" + _vm.prefixClass + \"-btn-current-\" + item.panel,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function click($event) {\n return _vm.handlePanelChange(item.panel);\n }\n }\n }, [_vm._v(\"\\n \" + _vm._s(item.label) + \"\\n \")]);\n }), 0)], 1), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-calendar-content\"\n }, [_c('table', {\n class: _vm.prefixClass + \"-table \" + _vm.prefixClass + \"-table-date\"\n }, [_c('thead', [_c('tr', [_vm.showWeekNumber ? _c('th', {\n class: _vm.prefixClass + \"-week-number-header\"\n }) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.days, function (day) {\n return _c('th', {\n key: day\n }, [_vm._v(_vm._s(day))]);\n })], 2)]), _vm._v(\" \"), _c('tbody', {\n on: {\n \"click\": _vm.handleCellClick\n }\n }, _vm._l(_vm.dates, function (row, i) {\n return _c('tr', {\n key: i,\n class: [_vm.prefixClass + \"-date-row\", _vm.getRowClasses(row)]\n }, [_vm.showWeekNumber ? _c('td', {\n class: _vm.prefixClass + \"-week-number\",\n attrs: {\n \"data-row-col\": i + \",0\"\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.getWeekNumber(row[0])) + \"\\n \")]) : _vm._e(), _vm._v(\" \"), _vm._l(row, function (cell, j) {\n return _c('td', {\n key: j,\n staticClass: \"cell\",\n class: _vm.getCellClasses(cell),\n attrs: {\n \"data-row-col\": i + \",\" + j,\n \"title\": _vm.getCellTitle(cell)\n },\n on: {\n \"mouseenter\": function mouseenter($event) {\n return _vm.handleMouseEnter(cell);\n },\n \"mouseleave\": function mouseleave($event) {\n return _vm.handleMouseLeave(cell);\n }\n }\n }, [_c('div', [_vm._v(_vm._s(cell.getDate()))])]);\n })], 2);\n }), 0)])])]);\n};\n\nvar __vue_staticRenderFns__$5 = [];\n/* style */\n\nvar __vue_inject_styles__$5 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$5 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$5 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$5 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$5 = normalizeComponent({\n render: __vue_render__$5,\n staticRenderFns: __vue_staticRenderFns__$5\n}, __vue_inject_styles__$5, __vue_script__$2, __vue_scope_id__$5, __vue_is_functional_template__$5, __vue_module_identifier__$5, false, undefined, undefined, undefined);\n\n//\nvar script$3 = {\n name: 'TableMonth',\n components: {\n IconButton: __vue_component__$4\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n calendar: {\n type: Date,\n default: function _default() {\n return new Date();\n }\n },\n getCellClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n calendarYear: function calendarYear() {\n return this.calendar.getFullYear();\n },\n months: function months() {\n var locale = this.getLocale();\n var monthsLocale = locale.months || locale.formatLocale.monthsShort;\n var months = monthsLocale.map(function (text, month) {\n return {\n text: text,\n month: month\n };\n });\n return chunk(months, 3);\n }\n },\n methods: {\n isDisabledArrows: function isDisabledArrows(type) {\n var date = new Date(this.calendar);\n\n switch (type) {\n case 'last-year':\n date.setFullYear(date.getFullYear() - 1, 11, 31);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-year':\n date.setFullYear(date.getFullYear() + 1, 0, 1);\n break;\n }\n\n return this.disabledCalendarChanger(date, type);\n },\n handleIconDoubleLeftClick: function handleIconDoubleLeftClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v - 1;\n }), 'last-year');\n },\n handleIconDoubleRightClick: function handleIconDoubleRightClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v + 1;\n }), 'next-year');\n },\n handlePanelChange: function handlePanelChange() {\n this.$emit('changepanel', 'year');\n },\n handleClick: function handleClick(evt) {\n var target = evt.target;\n\n if (target.tagName.toUpperCase() === 'DIV') {\n target = target.parentNode;\n }\n\n var month = target.getAttribute('data-month');\n\n if (month && !target.classList.contains('disabled')) {\n this.$emit('select', parseInt(month, 10));\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$3 = script$3;\n/* template */\n\nvar __vue_render__$6 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-calendar \" + _vm.prefixClass + \"-calendar-panel-month\"\n }, [_c('div', {\n class: _vm.prefixClass + \"-calendar-header\"\n }, [_c('icon-button', {\n attrs: {\n \"type\": \"double-left\",\n \"disabled\": _vm.isDisabledArrows('last-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"double-right\",\n \"disabled\": _vm.isDisabledArrows('next-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleRightClick\n }\n }), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-header-label\"\n }, [_c('button', {\n class: _vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": _vm.handlePanelChange\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.calendarYear) + \"\\n \")])])], 1), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-calendar-content\"\n }, [_c('table', {\n class: _vm.prefixClass + \"-table \" + _vm.prefixClass + \"-table-month\",\n on: {\n \"click\": _vm.handleClick\n }\n }, _vm._l(_vm.months, function (row, i) {\n return _c('tr', {\n key: i\n }, _vm._l(row, function (cell, j) {\n return _c('td', {\n key: j,\n staticClass: \"cell\",\n class: _vm.getCellClasses(cell.month),\n attrs: {\n \"data-month\": cell.month\n }\n }, [_c('div', [_vm._v(_vm._s(cell.text))])]);\n }), 0);\n }), 0)])]);\n};\n\nvar __vue_staticRenderFns__$6 = [];\n/* style */\n\nvar __vue_inject_styles__$6 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$6 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$6 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$6 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$6 = normalizeComponent({\n render: __vue_render__$6,\n staticRenderFns: __vue_staticRenderFns__$6\n}, __vue_inject_styles__$6, __vue_script__$3, __vue_scope_id__$6, __vue_is_functional_template__$6, __vue_module_identifier__$6, false, undefined, undefined, undefined);\n\n//\nvar script$4 = {\n name: 'TableYear',\n components: {\n IconButton: __vue_component__$4\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n calendar: {\n type: Date,\n default: function _default() {\n return new Date();\n }\n },\n getCellClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n getYearPanel: {\n type: Function\n }\n },\n computed: {\n years: function years() {\n var calendar = new Date(this.calendar);\n\n if (typeof this.getYearPanel === 'function') {\n return this.getYearPanel(calendar);\n }\n\n return this.getYears(calendar);\n },\n firstYear: function firstYear() {\n return this.years[0][0];\n },\n lastYear: function lastYear() {\n var last = function last(arr) {\n return arr[arr.length - 1];\n };\n\n return last(last(this.years));\n }\n },\n methods: {\n isDisabledArrows: function isDisabledArrows(type) {\n var date = new Date(this.calendar);\n\n switch (type) {\n case 'last-decade':\n date.setFullYear(this.firstYear - 1, 11, 31);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-decade':\n date.setFullYear(this.lastYear + 1, 0, 1);\n break;\n }\n\n return this.disabledCalendarChanger(date, type);\n },\n getYears: function getYears(calendar) {\n var firstYear = Math.floor(calendar.getFullYear() / 10) * 10;\n var years = [];\n\n for (var i = 0; i < 10; i++) {\n years.push(firstYear + i);\n }\n\n return chunk(years, 2);\n },\n handleIconDoubleLeftClick: function handleIconDoubleLeftClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v - 10;\n }), 'last-decade');\n },\n handleIconDoubleRightClick: function handleIconDoubleRightClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v + 10;\n }), 'next-decade');\n },\n handleClick: function handleClick(evt) {\n var target = evt.target;\n\n if (target.tagName.toUpperCase() === 'DIV') {\n target = target.parentNode;\n }\n\n var year = target.getAttribute('data-year');\n\n if (year && !target.classList.contains('disabled')) {\n this.$emit('select', parseInt(year, 10));\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$4 = script$4;\n/* template */\n\nvar __vue_render__$7 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-calendar \" + _vm.prefixClass + \"-calendar-panel-year\"\n }, [_c('div', {\n class: _vm.prefixClass + \"-calendar-header\"\n }, [_c('icon-button', {\n attrs: {\n \"type\": \"double-left\",\n \"disabled\": _vm.isDisabledArrows('last-decade')\n },\n on: {\n \"click\": _vm.handleIconDoubleLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"double-right\",\n \"disabled\": _vm.isDisabledArrows('next-decade')\n },\n on: {\n \"click\": _vm.handleIconDoubleRightClick\n }\n }), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-header-label\"\n }, [_c('span', [_vm._v(_vm._s(_vm.firstYear))]), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-decade-separator\"\n }), _vm._v(\" \"), _c('span', [_vm._v(_vm._s(_vm.lastYear))])])], 1), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-calendar-content\"\n }, [_c('table', {\n class: _vm.prefixClass + \"-table \" + _vm.prefixClass + \"-table-year\",\n on: {\n \"click\": _vm.handleClick\n }\n }, _vm._l(_vm.years, function (row, i) {\n return _c('tr', {\n key: i\n }, _vm._l(row, function (cell, j) {\n return _c('td', {\n key: j,\n staticClass: \"cell\",\n class: _vm.getCellClasses(cell),\n attrs: {\n \"data-year\": cell\n }\n }, [_c('div', [_vm._v(_vm._s(cell))])]);\n }), 0);\n }), 0)])]);\n};\n\nvar __vue_staticRenderFns__$7 = [];\n/* style */\n\nvar __vue_inject_styles__$7 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$7 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$7 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$7 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$7 = normalizeComponent({\n render: __vue_render__$7,\n staticRenderFns: __vue_staticRenderFns__$7\n}, __vue_inject_styles__$7, __vue_script__$4, __vue_scope_id__$7, __vue_is_functional_template__$7, __vue_module_identifier__$7, false, undefined, undefined, undefined);\n\nvar CalendarPanel = {\n name: 'CalendarPanel',\n inject: {\n prefixClass: {\n default: 'mx'\n },\n dispatchDatePicker: {\n default: function _default() {\n return function () {};\n }\n }\n },\n props: {\n value: {},\n defaultValue: {\n default: function _default() {\n var date = new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n }\n },\n defaultPanel: {\n type: String\n },\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n disabledDate: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n type: {\n type: String,\n default: 'date'\n },\n getClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n showWeekNumber: {\n type: Boolean,\n default: undefined\n },\n getYearPanel: {\n type: Function\n },\n titleFormat: {\n type: String,\n default: 'YYYY-MM-DD'\n },\n calendar: Date,\n // update date when select year or month\n partialUpdate: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n var panels = ['date', 'month', 'year'];\n var index = Math.max(panels.indexOf(this.type), panels.indexOf(this.defaultPanel));\n var panel = index !== -1 ? panels[index] : 'date';\n return {\n panel: panel,\n innerCalendar: new Date()\n };\n },\n computed: {\n innerValue: function innerValue() {\n var value = Array.isArray(this.value) ? this.value : [this.value];\n var map = {\n year: startOfYear,\n month: startOfMonth,\n date: startOfDay\n };\n var start = map[this.type] || map.date;\n return value.filter(isValidDate).map(function (v) {\n return start(v);\n });\n },\n calendarYear: function calendarYear() {\n return this.innerCalendar.getFullYear();\n },\n calendarMonth: function calendarMonth() {\n return this.innerCalendar.getMonth();\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: 'initCalendar'\n },\n calendar: {\n handler: 'initCalendar'\n },\n defaultValue: {\n handler: 'initCalendar'\n }\n },\n methods: {\n initCalendar: function initCalendar() {\n var calendarDate = this.calendar;\n\n if (!isValidDate(calendarDate)) {\n var length = this.innerValue.length;\n calendarDate = getValidDate(length > 0 ? this.innerValue[length - 1] : this.defaultValue);\n }\n\n this.innerCalendar = startOfMonth(calendarDate);\n },\n isDisabled: function isDisabled(date) {\n return this.disabledDate(new Date(date), this.innerValue);\n },\n emitDate: function emitDate(date, type) {\n if (!this.isDisabled(date)) {\n this.$emit('select', date, type, this.innerValue); // someone need get the first selected date to set range value. (#429)\n\n this.dispatchDatePicker('pick', date, type);\n }\n },\n handleCalendarChange: function handleCalendarChange(calendar, type) {\n var oldCalendar = new Date(this.innerCalendar);\n this.innerCalendar = calendar;\n this.$emit('update:calendar', calendar);\n this.dispatchDatePicker('calendar-change', calendar, oldCalendar, type);\n },\n handelPanelChange: function handelPanelChange(panel) {\n var oldPanel = this.panel;\n this.panel = panel;\n this.dispatchDatePicker('panel-change', panel, oldPanel);\n },\n handleSelectYear: function handleSelectYear(year) {\n if (this.type === 'year') {\n var date = this.getYearCellDate(year);\n this.emitDate(date, 'year');\n } else {\n this.handleCalendarChange(createDate(year, this.calendarMonth), 'year');\n this.handelPanelChange('month');\n\n if (this.partialUpdate && this.innerValue.length === 1) {\n var _date = new Date(this.innerValue[0]);\n\n _date.setFullYear(year);\n\n this.emitDate(_date, 'year');\n }\n }\n },\n handleSelectMonth: function handleSelectMonth(month) {\n if (this.type === 'month') {\n var date = this.getMonthCellDate(month);\n this.emitDate(date, 'month');\n } else {\n this.handleCalendarChange(createDate(this.calendarYear, month), 'month');\n this.handelPanelChange('date');\n\n if (this.partialUpdate && this.innerValue.length === 1) {\n var _date2 = new Date(this.innerValue[0]);\n\n _date2.setFullYear(this.calendarYear);\n\n this.emitDate(setMonth(_date2, month), 'month');\n }\n }\n },\n handleSelectDate: function handleSelectDate(date) {\n this.emitDate(date, this.type === 'week' ? 'week' : 'date');\n },\n getMonthCellDate: function getMonthCellDate(month) {\n return createDate(this.calendarYear, month);\n },\n getYearCellDate: function getYearCellDate(year) {\n return createDate(year, 0);\n },\n getDateClasses: function getDateClasses(cellDate) {\n var notCurrentMonth = cellDate.getMonth() !== this.calendarMonth;\n var classes = [];\n\n if (cellDate.getTime() === new Date().setHours(0, 0, 0, 0)) {\n classes.push('today');\n }\n\n if (notCurrentMonth) {\n classes.push('not-current-month');\n }\n\n var state = this.getStateClass(cellDate);\n\n if (!(state === 'active' && notCurrentMonth)) {\n classes.push(state);\n }\n\n return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n },\n getMonthClasses: function getMonthClasses(month) {\n var classes = [];\n\n if (this.type !== 'month') {\n if (this.calendarMonth === month) {\n classes.push('active');\n }\n\n var _cellDate = this.getMonthCellDate(month);\n\n if (this.disabledCalendarChanger(_cellDate, 'month')) {\n classes.push('disabled');\n }\n\n return classes;\n }\n\n var cellDate = this.getMonthCellDate(month);\n classes.push(this.getStateClass(cellDate));\n return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n },\n getYearClasses: function getYearClasses(year) {\n var classes = [];\n\n if (this.type !== 'year') {\n if (this.calendarYear === year) {\n classes.push('active');\n }\n\n var _cellDate2 = this.getYearCellDate(year);\n\n if (this.disabledCalendarChanger(_cellDate2, 'year')) {\n classes.push('disabled');\n }\n\n return classes;\n }\n\n var cellDate = this.getYearCellDate(year);\n classes.push(this.getStateClass(cellDate));\n return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n },\n getStateClass: function getStateClass(cellDate) {\n if (this.isDisabled(cellDate)) {\n return 'disabled';\n }\n\n if (this.innerValue.some(function (v) {\n return v.getTime() === cellDate.getTime();\n })) {\n return 'active';\n }\n\n return '';\n },\n getWeekState: function getWeekState(row) {\n if (this.type !== 'week') return '';\n var start = row[0].getTime();\n var end = row[6].getTime();\n var active = this.innerValue.some(function (v) {\n var time = v.getTime();\n return time >= start && time <= end;\n });\n return active ? \"\".concat(this.prefixClass, \"-active-week\") : '';\n }\n },\n render: function render() {\n var h = arguments[0];\n var panel = this.panel,\n innerCalendar = this.innerCalendar;\n\n if (panel === 'year') {\n return h(__vue_component__$7, {\n \"attrs\": {\n \"disabledCalendarChanger\": this.disabledCalendarChanger,\n \"calendar\": innerCalendar,\n \"getCellClasses\": this.getYearClasses,\n \"getYearPanel\": this.getYearPanel\n },\n \"on\": {\n \"select\": this.handleSelectYear,\n \"changecalendar\": this.handleCalendarChange\n }\n });\n }\n\n if (panel === 'month') {\n return h(__vue_component__$6, {\n \"attrs\": {\n \"disabledCalendarChanger\": this.disabledCalendarChanger,\n \"calendar\": innerCalendar,\n \"getCellClasses\": this.getMonthClasses\n },\n \"on\": {\n \"select\": this.handleSelectMonth,\n \"changepanel\": this.handelPanelChange,\n \"changecalendar\": this.handleCalendarChange\n }\n });\n }\n\n return h(__vue_component__$5, {\n \"attrs\": {\n \"disabledCalendarChanger\": this.disabledCalendarChanger,\n \"calendar\": innerCalendar,\n \"getCellClasses\": this.getDateClasses,\n \"getRowClasses\": this.getWeekState,\n \"titleFormat\": this.titleFormat,\n \"showWeekNumber\": typeof this.showWeekNumber === 'boolean' ? this.showWeekNumber : this.type === 'week'\n },\n \"class\": _defineProperty({}, \"\".concat(this.prefixClass, \"-calendar-week-mode\"), this.type === 'week'),\n \"on\": {\n \"select\": this.handleSelectDate,\n \"changepanel\": this.handelPanelChange,\n \"changecalendar\": this.handleCalendarChange\n }\n });\n }\n};\n\nvar CalendarRange = {\n name: 'CalendarRange',\n components: {\n CalendarPanel: CalendarPanel\n },\n provide: function provide() {\n return {\n onDateMouseEnter: this.onDateMouseEnter,\n onDateMouseLeave: this.onDateMouseLeave\n };\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: _objectSpread2({}, CalendarPanel.props),\n data: function data() {\n return {\n innerValue: [],\n calendars: [],\n hoveredValue: null\n };\n },\n computed: {\n // Minimum difference between start and end calendars\n calendarMinDiff: function calendarMinDiff() {\n var map = {\n date: 1,\n // type:date min 1 month\n month: 1 * 12,\n // type:month min 1 year\n year: 10 * 12 // type:year min 10 year\n\n };\n return map[this.type] || map.date;\n },\n calendarMaxDiff: function calendarMaxDiff() {\n return Infinity;\n },\n defaultValues: function defaultValues() {\n return Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue, this.defaultValue];\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler() {\n var _this = this;\n\n this.innerValue = isValidRangeDate(this.value) ? this.value : [new Date(NaN), new Date(NaN)];\n var calendars = this.innerValue.map(function (v, i) {\n return startOfMonth(getValidDate(v, _this.defaultValues[i]));\n });\n this.updateCalendars(calendars);\n }\n }\n },\n methods: {\n handleSelect: function handleSelect(date, type) {\n var _this$innerValue = _slicedToArray(this.innerValue, 2),\n startValue = _this$innerValue[0],\n endValue = _this$innerValue[1];\n\n if (isValidDate(startValue) && !isValidDate(endValue)) {\n if (startValue.getTime() > date.getTime()) {\n this.innerValue = [date, startValue];\n } else {\n this.innerValue = [startValue, date];\n }\n\n this.emitDate(this.innerValue, type);\n } else {\n this.innerValue = [date, new Date(NaN)];\n }\n },\n onDateMouseEnter: function onDateMouseEnter(cell) {\n this.hoveredValue = cell;\n },\n onDateMouseLeave: function onDateMouseLeave() {\n this.hoveredValue = null;\n },\n emitDate: function emitDate(dates, type) {\n this.$emit('select', dates, type);\n },\n updateStartCalendar: function updateStartCalendar(value) {\n this.updateCalendars([value, this.calendars[1]], 1);\n },\n updateEndCalendar: function updateEndCalendar(value) {\n this.updateCalendars([this.calendars[0], value], 0);\n },\n updateCalendars: function updateCalendars(calendars) {\n var adjustIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var gap = this.getCalendarGap(calendars);\n\n if (gap) {\n var calendar = new Date(calendars[adjustIndex]);\n calendar.setMonth(calendar.getMonth() + (adjustIndex === 0 ? -gap : gap));\n calendars[adjustIndex] = calendar;\n }\n\n this.calendars = calendars;\n },\n getCalendarGap: function getCalendarGap(calendars) {\n var _calendars = _slicedToArray(calendars, 2),\n calendarLeft = _calendars[0],\n calendarRight = _calendars[1];\n\n var yearDiff = calendarRight.getFullYear() - calendarLeft.getFullYear();\n var monthDiff = calendarRight.getMonth() - calendarLeft.getMonth();\n var diff = yearDiff * 12 + monthDiff;\n var min = this.calendarMinDiff;\n var max = this.calendarMaxDiff;\n\n if (diff < min) {\n return min - diff;\n }\n\n if (diff > max) {\n return max - diff;\n }\n\n return 0;\n },\n getRangeClasses: function getRangeClasses(cellDate, currentDates, classnames) {\n var classes = [].concat(this.getClasses(cellDate, currentDates, classnames));\n if (/disabled|active/.test(classnames)) return classes;\n\n var inRange = function inRange(data, range) {\n var fn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (v) {\n return v.getTime();\n };\n var value = fn(data);\n\n var _range$map = range.map(fn),\n _range$map2 = _slicedToArray(_range$map, 2),\n min = _range$map2[0],\n max = _range$map2[1];\n\n if (min > max) {\n var _ref = [max, min];\n min = _ref[0];\n max = _ref[1];\n }\n\n return value > min && value < max;\n };\n\n if (currentDates.length === 2 && inRange(cellDate, currentDates)) {\n return classes.concat('in-range');\n }\n\n if (currentDates.length === 1 && this.hoveredValue && inRange(cellDate, [currentDates[0], this.hoveredValue])) {\n return classes.concat('hover-in-range');\n }\n\n return classes;\n }\n },\n render: function render() {\n var _this2 = this;\n\n var h = arguments[0];\n var calendarRange = this.calendars.map(function (calendar, index) {\n var props = _objectSpread2({}, _this2.$props, {\n calendar: calendar,\n value: _this2.innerValue,\n defaultValue: _this2.defaultValues[index],\n getClasses: _this2.getRangeClasses,\n // don't update when range is true\n partialUpdate: false\n });\n\n var on = {\n select: _this2.handleSelect,\n 'update:calendar': index === 0 ? _this2.updateStartCalendar : _this2.updateEndCalendar\n };\n return h(\"calendar-panel\", {\n \"props\": _objectSpread2({}, props),\n \"on\": _objectSpread2({}, on)\n });\n });\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-range-wrapper\")\n }, [calendarRange]);\n }\n};\n\nvar scrollBarWidth;\nfunction getScrollbarWidth () {\n if (typeof window === 'undefined') return 0;\n if (scrollBarWidth !== undefined) return scrollBarWidth;\n var outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll';\n outer.style.width = '100px';\n outer.style.position = 'absolute';\n outer.style.top = '-9999px';\n document.body.appendChild(outer);\n var inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n scrollBarWidth = outer.offsetWidth - inner.offsetWidth;\n outer.parentNode.removeChild(outer);\n return scrollBarWidth;\n}\n\n//\nvar script$5 = {\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n data: function data() {\n return {\n scrollbarWidth: 0,\n thumbTop: '',\n thumbHeight: ''\n };\n },\n created: function created() {\n this.scrollbarWidth = getScrollbarWidth();\n document.addEventListener('mouseup', this.handleDragend);\n },\n beforeDestroy: function beforeDestroy() {\n document.addEventListener('mouseup', this.handleDragend);\n },\n mounted: function mounted() {\n this.$nextTick(this.getThumbSize);\n },\n methods: {\n getThumbSize: function getThumbSize() {\n var wrap = this.$refs.wrap;\n if (!wrap) return;\n var heightPercentage = wrap.clientHeight * 100 / wrap.scrollHeight;\n this.thumbHeight = heightPercentage < 100 ? \"\".concat(heightPercentage, \"%\") : '';\n },\n handleScroll: function handleScroll(evt) {\n var el = evt.currentTarget;\n var scrollHeight = el.scrollHeight,\n scrollTop = el.scrollTop;\n this.thumbTop = \"\".concat(scrollTop * 100 / scrollHeight, \"%\");\n },\n handleDragstart: function handleDragstart(evt) {\n evt.stopImmediatePropagation();\n this._draggable = true;\n var offsetTop = this.$refs.thumb.offsetTop;\n this._prevY = evt.clientY - offsetTop;\n document.addEventListener('mousemove', this.handleDraging);\n },\n handleDraging: function handleDraging(evt) {\n if (!this._draggable) return;\n var clientY = evt.clientY;\n var wrap = this.$refs.wrap;\n var scrollHeight = wrap.scrollHeight,\n clientHeight = wrap.clientHeight;\n var offsetY = clientY - this._prevY;\n var top = offsetY * scrollHeight / clientHeight;\n wrap.scrollTop = top;\n },\n handleDragend: function handleDragend() {\n if (this._draggable) {\n this._draggable = false;\n document.removeEventListener('mousemove', this.handleDraging);\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$5 = script$5;\n/* template */\n\nvar __vue_render__$8 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-scrollbar\",\n style: {\n position: 'relative',\n overflow: 'hidden'\n }\n }, [_c('div', {\n ref: \"wrap\",\n class: _vm.prefixClass + \"-scrollbar-wrap\",\n style: {\n marginRight: \"-\" + _vm.scrollbarWidth + \"px\"\n },\n on: {\n \"scroll\": _vm.handleScroll\n }\n }, [_vm._t(\"default\")], 2), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-scrollbar-track\"\n }, [_c('div', {\n ref: \"thumb\",\n class: _vm.prefixClass + \"-scrollbar-thumb\",\n style: {\n height: _vm.thumbHeight,\n top: _vm.thumbTop\n },\n on: {\n \"mousedown\": _vm.handleDragstart\n }\n })])]);\n};\n\nvar __vue_staticRenderFns__$8 = [];\n/* style */\n\nvar __vue_inject_styles__$8 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$8 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$8 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$8 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$8 = normalizeComponent({\n render: __vue_render__$8,\n staticRenderFns: __vue_staticRenderFns__$8\n}, __vue_inject_styles__$8, __vue_script__$5, __vue_scope_id__$8, __vue_is_functional_template__$8, __vue_module_identifier__$8, false, undefined, undefined, undefined);\n\n//\n\nvar padNumber = function padNumber(value) {\n value = parseInt(value, 10);\n return value < 10 ? \"0\".concat(value) : \"\".concat(value);\n};\n\nvar generateOptions = function generateOptions(length, step, options) {\n if (Array.isArray(options)) {\n return options.filter(function (v) {\n return v >= 0 && v < length;\n });\n }\n\n if (step <= 0) {\n step = 1;\n }\n\n var arr = [];\n\n for (var i = 0; i < length; i += step) {\n arr.push(i);\n }\n\n return arr;\n};\n\nvar scrollTo = function scrollTo(element, to) {\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n // jump to target if duration zero\n if (duration <= 0) {\n requestAnimationFrame(function () {\n element.scrollTop = to;\n });\n return;\n }\n\n var difference = to - element.scrollTop;\n var tick = difference / duration * 10;\n requestAnimationFrame(function () {\n var scrollTop = element.scrollTop + tick;\n\n if (scrollTop >= to) {\n element.scrollTop = to;\n return;\n }\n\n element.scrollTop = scrollTop;\n scrollTo(element, to, duration - 10);\n });\n};\n\nvar script$6 = {\n name: 'ListColumns',\n components: {\n ScrollbarVertical: __vue_component__$8\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n date: Date,\n scrollDuration: {\n type: Number,\n default: 100\n },\n getClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n hourOptions: Array,\n minuteOptions: Array,\n secondOptions: Array,\n showHour: {\n type: Boolean,\n default: true\n },\n showMinute: {\n type: Boolean,\n default: true\n },\n showSecond: {\n type: Boolean,\n default: true\n },\n hourStep: {\n type: Number,\n default: 1\n },\n minuteStep: {\n type: Number,\n default: 1\n },\n secondStep: {\n type: Number,\n default: 1\n },\n use12h: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n columns: function columns() {\n var cols = [];\n if (this.showHour) cols.push({\n type: 'hour',\n list: this.getHoursList()\n });\n if (this.showMinute) cols.push({\n type: 'minute',\n list: this.getMinutesList()\n });\n if (this.showSecond) cols.push({\n type: 'second',\n list: this.getSecondsList()\n });\n if (this.use12h) cols.push({\n type: 'ampm',\n list: this.getAMPMList()\n });\n return cols.filter(function (v) {\n return v.list.length > 0;\n });\n }\n },\n watch: {\n date: {\n handler: function handler() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.scrollToSelected(_this.scrollDuration);\n });\n }\n }\n },\n mounted: function mounted() {\n this.scrollToSelected(0);\n },\n methods: {\n getHoursList: function getHoursList() {\n var _this2 = this;\n\n return generateOptions(this.use12h ? 12 : 24, this.hourStep, this.hourOptions).map(function (num) {\n var date = new Date(_this2.date);\n var text = padNumber(num);\n\n if (_this2.use12h) {\n if (num === 0) {\n text = '12';\n }\n\n if (date.getHours() >= 12) {\n num += 12;\n }\n }\n\n var value = date.setHours(num);\n return {\n value: value,\n text: text\n };\n });\n },\n getMinutesList: function getMinutesList() {\n var _this3 = this;\n\n return generateOptions(60, this.minuteStep, this.minuteOptions).map(function (num) {\n var value = new Date(_this3.date).setMinutes(num);\n return {\n value: value,\n text: padNumber(num)\n };\n });\n },\n getSecondsList: function getSecondsList() {\n var _this4 = this;\n\n return generateOptions(60, this.secondStep, this.secondOptions).map(function (num) {\n var value = new Date(_this4.date).setSeconds(num);\n return {\n value: value,\n text: padNumber(num)\n };\n });\n },\n getAMPMList: function getAMPMList() {\n var _this5 = this;\n\n return ['AM', 'PM'].map(function (text, i) {\n var date = new Date(_this5.date);\n var value = date.setHours(date.getHours() % 12 + i * 12);\n return {\n text: text,\n value: value\n };\n });\n },\n scrollToSelected: function scrollToSelected(duration) {\n var elements = this.$el.querySelectorAll('.active');\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var scrollElement = getScrollParent(element, this.$el);\n\n if (scrollElement) {\n var to = element.offsetTop;\n scrollTo(scrollElement, to, duration);\n }\n }\n },\n handleSelect: function handleSelect(evt) {\n var target = evt.target,\n currentTarget = evt.currentTarget;\n if (target.tagName.toUpperCase() !== 'LI') return;\n var type = currentTarget.getAttribute('data-type');\n var colIndex = parseInt(currentTarget.getAttribute('data-index'), 10);\n var cellIndex = parseInt(target.getAttribute('data-index'), 10);\n var value = this.columns[colIndex].list[cellIndex].value;\n this.$emit('select', value, type);\n }\n }\n};\n\n/* script */\nvar __vue_script__$6 = script$6;\n/* template */\n\nvar __vue_render__$9 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-time-columns\"\n }, _vm._l(_vm.columns, function (col, i) {\n return _c('scrollbar-vertical', {\n key: i,\n class: _vm.prefixClass + \"-time-column\"\n }, [_c('ul', {\n class: _vm.prefixClass + \"-time-list\",\n attrs: {\n \"data-type\": col.type,\n \"data-index\": i\n },\n on: {\n \"click\": _vm.handleSelect\n }\n }, _vm._l(col.list, function (item, j) {\n return _c('li', {\n key: item.value,\n class: [_vm.prefixClass + \"-time-item\", _vm.getClasses(item.value, col.type)],\n attrs: {\n \"data-index\": j\n }\n }, [_vm._v(\"\\n \" + _vm._s(item.text) + \"\\n \")]);\n }), 0)]);\n }), 1);\n};\n\nvar __vue_staticRenderFns__$9 = [];\n/* style */\n\nvar __vue_inject_styles__$9 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$9 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$9 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$9 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$9 = normalizeComponent({\n render: __vue_render__$9,\n staticRenderFns: __vue_staticRenderFns__$9\n}, __vue_inject_styles__$9, __vue_script__$6, __vue_scope_id__$9, __vue_is_functional_template__$9, __vue_module_identifier__$9, false, undefined, undefined, undefined);\n\n//\n\nfunction parseOption() {\n var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var values = time.split(':');\n\n if (values.length >= 2) {\n var hours = parseInt(values[0], 10);\n var minutes = parseInt(values[1], 10);\n return {\n hours: hours,\n minutes: minutes\n };\n }\n\n return null;\n}\n\nvar scrollTo$1 = function scrollTo(element, to) {\n if (element) {\n element.scrollTop = to;\n }\n};\n\nvar script$7 = {\n name: 'ListOptions',\n components: {\n ScrollbarVertical: __vue_component__$8\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n date: Date,\n options: {\n type: [Object, Function],\n default: function _default() {\n return [];\n }\n },\n format: {\n type: String,\n default: 'HH:mm:ss'\n },\n getClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n list: function list() {\n var result = [];\n var options = this.options;\n\n if (typeof options === 'function') {\n return options() || [];\n }\n\n var start = parseOption(options.start);\n var end = parseOption(options.end);\n var step = parseOption(options.step);\n var fmt = options.format || this.format;\n\n if (start && end && step) {\n var startMinutes = start.minutes + start.hours * 60;\n var endMinutes = end.minutes + end.hours * 60;\n var stepMinutes = step.minutes + step.hours * 60;\n var len = Math.floor((endMinutes - startMinutes) / stepMinutes);\n\n for (var i = 0; i <= len; i++) {\n var timeMinutes = startMinutes + i * stepMinutes;\n var hours = Math.floor(timeMinutes / 60);\n var minutes = timeMinutes % 60;\n var value = new Date(this.date).setHours(hours, minutes, 0);\n result.push({\n value: value,\n text: this.formatDate(value, fmt)\n });\n }\n }\n\n return result;\n }\n },\n mounted: function mounted() {\n this.scrollToSelected();\n },\n methods: {\n formatDate: function formatDate(date, fmt) {\n return format(date, fmt, {\n locale: this.getLocale().formatLocale\n });\n },\n scrollToSelected: function scrollToSelected() {\n var element = this.$el.querySelector('.active');\n if (!element) return;\n var scrollElement = getScrollParent(element, this.$el);\n if (!scrollElement) return;\n var to = element.offsetTop;\n scrollTo$1(scrollElement, to);\n },\n handleSelect: function handleSelect(value) {\n this.$emit('select', value, 'time');\n }\n }\n};\n\n/* script */\nvar __vue_script__$7 = script$7;\n/* template */\n\nvar __vue_render__$a = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('scrollbar-vertical', _vm._l(_vm.list, function (item) {\n return _c('div', {\n key: item.value,\n class: [_vm.prefixClass + \"-time-option\", _vm.getClasses(item.value)],\n on: {\n \"click\": function click($event) {\n return _vm.handleSelect(item.value);\n }\n }\n }, [_vm._v(\"\\n \" + _vm._s(item.text) + \"\\n \")]);\n }), 0);\n};\n\nvar __vue_staticRenderFns__$a = [];\n/* style */\n\nvar __vue_inject_styles__$a = undefined;\n/* scoped */\n\nvar __vue_scope_id__$a = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$a = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$a = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$a = normalizeComponent({\n render: __vue_render__$a,\n staticRenderFns: __vue_staticRenderFns__$a\n}, __vue_inject_styles__$a, __vue_script__$7, __vue_scope_id__$a, __vue_is_functional_template__$a, __vue_module_identifier__$a, false, undefined, undefined, undefined);\n\n//\nvar script$8 = {\n name: 'TimePanel',\n components: {\n ListColumns: __vue_component__$9,\n ListOptions: __vue_component__$a\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n value: {},\n defaultValue: {\n default: function _default() {\n var date = new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n }\n },\n format: {\n default: 'HH:mm:ss'\n },\n timeTitleFormat: {\n type: String,\n default: 'YYYY-MM-DD'\n },\n showTimeHeader: {\n type: Boolean,\n default: false\n },\n disabledTime: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n timePickerOptions: {\n type: [Object, Function],\n default: function _default() {\n return null;\n }\n },\n hourOptions: Array,\n minuteOptions: Array,\n secondOptions: Array,\n hourStep: {\n type: Number,\n default: 1\n },\n minuteStep: {\n type: Number,\n default: 1\n },\n secondStep: {\n type: Number,\n default: 1\n },\n showHour: {\n type: Boolean,\n default: undefined\n },\n showMinute: {\n type: Boolean,\n default: undefined\n },\n showSecond: {\n type: Boolean,\n default: undefined\n },\n use12h: {\n type: Boolean,\n default: undefined\n },\n scrollDuration: {\n type: Number,\n default: 100\n }\n },\n data: function data() {\n return {\n innerValue: getValidDate(this.value, this.defaultValue)\n };\n },\n computed: {\n title: function title() {\n var titleFormat = this.timeTitleFormat;\n var date = new Date(this.innerValue);\n return this.formatDate(date, titleFormat);\n },\n innerForamt: function innerForamt() {\n return typeof this.format === 'string' ? this.format : 'HH:mm:ss';\n },\n ShowHourMinuteSecondAMPM: function ShowHourMinuteSecondAMPM() {\n var _this = this;\n\n var fmt = this.innerForamt;\n var defaultProps = {\n showHour: /[HhKk]/.test(fmt),\n showMinute: /m/.test(fmt),\n showSecond: /s/.test(fmt),\n use12h: /a/i.test(fmt)\n };\n var obj = {};\n Object.keys(defaultProps).forEach(function (key) {\n obj[key] = typeof _this[key] === 'boolean' ? _this[key] : defaultProps[key];\n });\n return obj;\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler() {\n this.innerValue = getValidDate(this.value, this.defaultValue);\n }\n }\n },\n methods: {\n formatDate: function formatDate(date, fmt) {\n return format(date, fmt, {\n locale: this.getLocale().formatLocale\n });\n },\n isDisabledTime: function isDisabledTime(value) {\n return this.disabledTime(new Date(value));\n },\n isDisabledHour: function isDisabledHour(date) {\n var value = new Date(date);\n return this.isDisabledTime(value) && this.isDisabledTime(value.setMinutes(0, 0, 0)) && this.isDisabledTime(value.setMinutes(59, 59, 999));\n },\n isDisabledMinute: function isDisabledMinute(date) {\n var value = new Date(date);\n return this.isDisabledTime(value) && this.isDisabledTime(value.setSeconds(0, 0)) && this.isDisabledTime(value.setSeconds(59, 999));\n },\n isDisabledAMPM: function isDisabledAMPM(date) {\n var value = new Date(date);\n var minHour = value.getHours() < 12 ? 0 : 12;\n var maxHour = minHour + 11;\n return this.isDisabledTime(value) && this.isDisabledTime(value.setHours(minHour, 0, 0, 0)) && this.isDisabledTime(value.setHours(maxHour, 59, 59, 999));\n },\n isDisabled: function isDisabled(date, type) {\n if (type === 'hour') {\n return this.isDisabledHour(date);\n }\n\n if (type === 'minute') {\n return this.isDisabledMinute(date);\n }\n\n if (type === 'ampm') {\n return this.isDisabledAMPM(date);\n }\n\n return this.isDisabledTime(date);\n },\n handleSelect: function handleSelect(value, type) {\n var date = new Date(value);\n\n if (!this.isDisabled(value, type)) {\n this.innerValue = date;\n\n if (!this.isDisabledTime(date)) {\n this.$emit('select', date, type);\n }\n }\n },\n handleClickTitle: function handleClickTitle() {\n this.$emit('clicktitle');\n },\n getClasses: function getClasses(value, type) {\n var cellDate = new Date(value);\n\n if (this.isDisabled(value, type)) {\n return 'disabled';\n }\n\n if (cellDate.getTime() === this.innerValue.getTime()) {\n return 'active';\n }\n\n return '';\n }\n }\n};\n\n/* script */\nvar __vue_script__$8 = script$8;\n/* template */\n\nvar __vue_render__$b = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-time\"\n }, [_vm.showTimeHeader ? _c('div', {\n class: _vm.prefixClass + \"-time-header\"\n }, [_c('button', {\n class: _vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text \" + _vm.prefixClass + \"-time-header-title\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": _vm.handleClickTitle\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.title) + \"\\n \")])]) : _vm._e(), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-time-content\"\n }, [_vm.timePickerOptions ? _c('list-options', {\n attrs: {\n \"date\": _vm.innerValue,\n \"get-classes\": _vm.getClasses,\n \"options\": _vm.timePickerOptions,\n \"format\": _vm.innerForamt\n },\n on: {\n \"select\": _vm.handleSelect\n }\n }) : _c('list-columns', _vm._b({\n attrs: {\n \"date\": _vm.innerValue,\n \"get-classes\": _vm.getClasses,\n \"hour-options\": _vm.hourOptions,\n \"minute-options\": _vm.minuteOptions,\n \"second-options\": _vm.secondOptions,\n \"hour-step\": _vm.hourStep,\n \"minute-step\": _vm.minuteStep,\n \"second-step\": _vm.secondStep,\n \"scroll-duration\": _vm.scrollDuration\n },\n on: {\n \"select\": _vm.handleSelect\n }\n }, 'list-columns', _vm.ShowHourMinuteSecondAMPM, false))], 1)]);\n};\n\nvar __vue_staticRenderFns__$b = [];\n/* style */\n\nvar __vue_inject_styles__$b = undefined;\n/* scoped */\n\nvar __vue_scope_id__$b = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$b = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$b = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$b = normalizeComponent({\n render: __vue_render__$b,\n staticRenderFns: __vue_staticRenderFns__$b\n}, __vue_inject_styles__$b, __vue_script__$8, __vue_scope_id__$b, __vue_is_functional_template__$b, __vue_module_identifier__$b, false, undefined, undefined, undefined);\n\nvar TimeRange = {\n name: 'TimeRange',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: _objectSpread2({}, __vue_component__$b.props),\n data: function data() {\n return {\n startValue: new Date(NaN),\n endValue: new Date(NaN)\n };\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler() {\n if (isValidRangeDate(this.value)) {\n var _this$value = _slicedToArray(this.value, 2),\n startValue = _this$value[0],\n endValue = _this$value[1];\n\n this.startValue = startValue;\n this.endValue = endValue;\n } else {\n this.startValue = new Date(NaN);\n this.endValue = new Date(NaN);\n }\n }\n }\n },\n methods: {\n emitChange: function emitChange(type, index) {\n var date = [this.startValue, this.endValue];\n this.$emit('select', date, type === 'time' ? 'time-range' : type, index);\n },\n handleSelectStart: function handleSelectStart(date, type) {\n this.startValue = date; // check the NaN\n\n if (!(this.endValue.getTime() >= date.getTime())) {\n this.endValue = date;\n }\n\n this.emitChange(type, 0);\n },\n handleSelectEnd: function handleSelectEnd(date, type) {\n // check the NaN\n this.endValue = date;\n\n if (!(this.startValue.getTime() <= date.getTime())) {\n this.startValue = date;\n }\n\n this.emitChange(type, 1);\n },\n disabledStartTime: function disabledStartTime(date) {\n return this.disabledTime(date, 0);\n },\n disabledEndTime: function disabledEndTime(date) {\n return date.getTime() < this.startValue.getTime() || this.disabledTime(date, 1);\n }\n },\n render: function render() {\n var h = arguments[0];\n var defaultValues = Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue, this.defaultValue];\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-range-wrapper\")\n }, [h(__vue_component__$b, {\n \"props\": _objectSpread2({}, _objectSpread2({}, this.$props, {\n value: this.startValue,\n defaultValue: defaultValues[0],\n disabledTime: this.disabledStartTime\n })),\n \"on\": _objectSpread2({}, _objectSpread2({}, this.$listeners, {\n select: this.handleSelectStart\n }))\n }), h(__vue_component__$b, {\n \"props\": _objectSpread2({}, _objectSpread2({}, this.$props, {\n value: this.endValue,\n defaultValue: defaultValues[1],\n disabledTime: this.disabledEndTime\n })),\n \"on\": _objectSpread2({}, _objectSpread2({}, this.$listeners, {\n select: this.handleSelectEnd\n }))\n })]);\n }\n};\n\nvar DatetimePanel = {\n name: 'DatetimePanel',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n emits: ['select', 'update:show-time-panel'],\n props: _objectSpread2({}, CalendarPanel.props, {}, __vue_component__$b.props, {\n showTimePanel: {\n type: Boolean,\n default: undefined\n }\n }),\n data: function data() {\n return {\n defaultTimeVisible: false,\n currentValue: this.value\n };\n },\n computed: {\n timeVisible: function timeVisible() {\n return typeof this.showTimePanel === 'boolean' ? this.showTimePanel : this.defaultTimeVisible;\n }\n },\n watch: {\n value: function value(val) {\n this.currentValue = val;\n }\n },\n methods: {\n closeTimePanel: function closeTimePanel() {\n this.defaultTimeVisible = false;\n this.$emit('update:show-time-panel', false);\n },\n openTimePanel: function openTimePanel() {\n this.defaultTimeVisible = true;\n this.$emit('update:show-time-panel', true);\n },\n emitDate: function emitDate(date, type) {\n this.$emit('select', date, type);\n },\n handleSelect: function handleSelect(date, type) {\n if (type === 'date') {\n this.openTimePanel();\n }\n\n var datetime = assignTime(date, getValidDate(this.value, this.defaultValue));\n\n if (this.disabledTime(new Date(datetime))) {\n // set the time of defalutValue;\n datetime = assignTime(date, this.defaultValue);\n\n if (this.disabledTime(new Date(datetime))) {\n // if disabled don't emit date\n this.currentValue = datetime;\n return;\n }\n }\n\n this.emitDate(datetime, type);\n }\n },\n render: function render() {\n var h = arguments[0];\n var calendarProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(CalendarPanel.props)), {\n type: 'date',\n value: this.currentValue\n }),\n on: {\n select: this.handleSelect\n }\n };\n var timeProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(__vue_component__$b.props)), {\n showTimeHeader: true,\n value: this.currentValue\n }),\n on: {\n select: this.emitDate,\n clicktitle: this.closeTimePanel\n }\n };\n var prefixClass = this.prefixClass;\n return h(\"div\", [h(CalendarPanel, helper([{}, calendarProps])), this.timeVisible && h(__vue_component__$b, helper([{\n \"class\": \"\".concat(prefixClass, \"-calendar-time\")\n }, timeProps]))]);\n }\n};\n\nvar DatetimeRange = {\n name: 'DatetimeRange',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n emits: ['select', 'update:show-time-panel'],\n props: _objectSpread2({}, CalendarRange.props, {}, TimeRange.props, {\n showTimePanel: {\n type: Boolean,\n default: undefined\n }\n }),\n data: function data() {\n return {\n defaultTimeVisible: false,\n currentValue: this.value\n };\n },\n computed: {\n timeVisible: function timeVisible() {\n return typeof this.showTimePanel === 'boolean' ? this.showTimePanel : this.defaultTimeVisible;\n }\n },\n watch: {\n value: function value(val) {\n this.currentValue = val;\n }\n },\n methods: {\n closeTimePanel: function closeTimePanel() {\n this.defaultTimeVisible = false;\n this.$emit('update:show-time-panel', false);\n },\n openTimePanel: function openTimePanel() {\n this.defaultTimeVisible = true;\n this.$emit('update:show-time-panel', true);\n },\n emitDate: function emitDate(dates, type) {\n this.$emit('select', dates, type);\n },\n handleSelect: function handleSelect(dates, type) {\n var _this = this;\n\n if (type === 'date') {\n this.openTimePanel();\n }\n\n var defaultValues = Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue, this.defaultValue];\n var datetimes = dates.map(function (date, i) {\n var time = isValidRangeDate(_this.value) ? _this.value[i] : defaultValues[i];\n return assignTime(date, time);\n });\n\n if (datetimes[1].getTime() < datetimes[0].getTime()) {\n datetimes = [datetimes[0], datetimes[0]];\n }\n\n if (datetimes.some(this.disabledTime)) {\n datetimes = dates.map(function (date, i) {\n return assignTime(date, defaultValues[i]);\n });\n\n if (datetimes.some(this.disabledTime)) {\n this.currentValue = datetimes;\n return;\n }\n }\n\n this.emitDate(datetimes, type);\n }\n },\n render: function render() {\n var h = arguments[0];\n var calendarProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(CalendarRange.props)), {\n type: 'date',\n value: this.currentValue\n }),\n on: {\n select: this.handleSelect\n }\n };\n var timeProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(TimeRange.props)), {\n value: this.currentValue,\n showTimeHeader: true\n }),\n on: {\n select: this.emitDate,\n clicktitle: this.closeTimePanel\n }\n };\n var prefixClass = this.prefixClass;\n return h(\"div\", [h(CalendarRange, helper([{}, calendarProps])), this.timeVisible && h(TimeRange, helper([{\n \"class\": \"\".concat(prefixClass, \"-calendar-time\")\n }, timeProps]))]);\n }\n};\n\nvar componentMap = {\n default: CalendarPanel,\n time: __vue_component__$b,\n datetime: DatetimePanel\n};\nvar componentRangeMap = {\n default: CalendarRange,\n time: TimeRange,\n datetime: DatetimeRange\n};\nvar DatePicker = {\n name: 'DatePicker',\n provide: function provide() {\n var _this = this;\n\n return {\n // make locale reactive\n getLocale: function getLocale() {\n return _this.locale;\n },\n getWeek: this.getWeek,\n prefixClass: this.prefixClass,\n dispatchDatePicker: this.$emit.bind(this)\n };\n },\n props: _objectSpread2({}, DatetimePanel.props, {\n value: {},\n valueType: {\n type: String,\n default: 'date' // date, format, timestamp, or token like 'YYYY-MM-DD'\n\n },\n type: {\n type: String,\n // ['date', 'datetime', 'time', 'year', 'month', 'week']\n default: 'date'\n },\n format: {\n type: String\n },\n formatter: {\n type: Object\n },\n range: {\n type: Boolean,\n default: false\n },\n multiple: {\n type: Boolean,\n default: false\n },\n rangeSeparator: {\n type: String\n },\n lang: {\n type: [String, Object]\n },\n placeholder: {\n type: String,\n default: ''\n },\n editable: {\n type: Boolean,\n default: true\n },\n disabled: {\n type: Boolean,\n default: false\n },\n clearable: {\n type: Boolean,\n default: true\n },\n prefixClass: {\n type: String,\n default: 'mx'\n },\n inputClass: {},\n inputAttr: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n appendToBody: {\n type: Boolean,\n default: true\n },\n open: {\n type: Boolean,\n default: undefined\n },\n popupClass: {},\n popupStyle: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n inline: {\n type: Boolean,\n default: false\n },\n confirm: {\n type: Boolean,\n default: false\n },\n confirmText: {\n type: String,\n default: 'OK'\n },\n renderInputText: {\n type: Function\n },\n shortcuts: {\n type: Array,\n validator: function validator(value) {\n return Array.isArray(value) && value.every(function (v) {\n return isObject(v) && typeof v.text === 'string' && typeof v.onClick === 'function';\n });\n },\n default: function _default() {\n return [];\n }\n }\n }),\n data: function data() {\n return {\n // cache the innervalue, wait to confirm\n currentValue: null,\n userInput: null,\n defaultOpen: false,\n mouseInInput: false\n };\n },\n computed: {\n popupVisible: function popupVisible() {\n return !this.disabled && (typeof this.open === 'boolean' ? this.open : this.defaultOpen);\n },\n innerRangeSeparator: function innerRangeSeparator() {\n return this.rangeSeparator || (this.multiple ? ',' : ' ~ ');\n },\n innerFormat: function innerFormat() {\n var map = {\n date: 'YYYY-MM-DD',\n datetime: 'YYYY-MM-DD HH:mm:ss',\n year: 'YYYY',\n month: 'YYYY-MM',\n time: 'HH:mm:ss',\n week: 'w'\n };\n return this.format || map[this.type] || map.date;\n },\n innerValue: function innerValue() {\n var value = this.value;\n\n if (this.validMultipleType) {\n value = Array.isArray(value) ? value : [];\n return value.map(this.value2date);\n }\n\n if (this.range) {\n value = Array.isArray(value) ? value.slice(0, 2) : [null, null];\n return value.map(this.value2date);\n }\n\n return this.value2date(value);\n },\n text: function text() {\n var _this2 = this;\n\n if (this.userInput !== null) {\n return this.userInput;\n }\n\n if (typeof this.renderInputText === 'function') {\n return this.renderInputText(this.innerValue);\n }\n\n if (!this.isValidValue(this.innerValue)) {\n return '';\n }\n\n if (Array.isArray(this.innerValue)) {\n return this.innerValue.map(function (v) {\n return _this2.formatDate(v);\n }).join(this.innerRangeSeparator);\n }\n\n return this.formatDate(this.innerValue);\n },\n showClearIcon: function showClearIcon() {\n return !this.disabled && this.clearable && this.text && this.mouseInInput;\n },\n locale: function locale() {\n if (isObject(this.lang)) {\n return mergeDeep(getLocale(), this.lang);\n }\n\n return getLocale(this.lang);\n },\n validMultipleType: function validMultipleType() {\n var types = ['date', 'month', 'year'];\n return this.multiple && !this.range && types.indexOf(this.type) !== -1;\n }\n },\n watch: {\n innerValue: {\n immediate: true,\n handler: function handler(val) {\n this.currentValue = val;\n }\n },\n popupVisible: {\n handler: function handler(val) {\n if (val) {\n this.currentValue = this.innerValue;\n }\n }\n }\n },\n created: function created() {\n if (_typeof(this.format) === 'object') {\n console.warn(\"[vue2-datepicker]: The prop `format` don't support Object any more. You can use the new prop `formatter` to replace it\");\n }\n },\n methods: {\n handleMouseEnter: function handleMouseEnter() {\n this.mouseInInput = true;\n },\n handleMouseLeave: function handleMouseLeave() {\n this.mouseInInput = false;\n },\n handleClickOutSide: function handleClickOutSide(evt) {\n var target = evt.target;\n\n if (!this.$el.contains(target)) {\n this.closePopup();\n }\n },\n getFormatter: function getFormatter(key) {\n return isObject(this.formatter) && this.formatter[key] || isObject(this.format) && this.format[key];\n },\n getWeek: function getWeek$1(date, options) {\n if (typeof this.getFormatter('getWeek') === 'function') {\n return this.getFormatter('getWeek')(date, options);\n }\n\n return getWeek(date, options);\n },\n parseDate: function parseDate(value, fmt) {\n fmt = fmt || this.innerFormat;\n\n if (typeof this.getFormatter('parse') === 'function') {\n return this.getFormatter('parse')(value, fmt);\n }\n\n var backupDate = new Date();\n return parse(value, fmt, {\n locale: this.locale.formatLocale,\n backupDate: backupDate\n });\n },\n formatDate: function formatDate(date, fmt) {\n fmt = fmt || this.innerFormat;\n\n if (typeof this.getFormatter('stringify') === 'function') {\n return this.getFormatter('stringify')(date, fmt);\n }\n\n return format(date, fmt, {\n locale: this.locale.formatLocale\n });\n },\n // transform the outer value to inner date\n value2date: function value2date(value) {\n switch (this.valueType) {\n case 'date':\n return value instanceof Date ? new Date(value.getTime()) : new Date(NaN);\n\n case 'timestamp':\n return typeof value === 'number' ? new Date(value) : new Date(NaN);\n\n case 'format':\n return typeof value === 'string' ? this.parseDate(value) : new Date(NaN);\n\n default:\n return typeof value === 'string' ? this.parseDate(value, this.valueType) : new Date(NaN);\n }\n },\n // transform the inner date to outer value\n date2value: function date2value(date) {\n if (!isValidDate(date)) return null;\n\n switch (this.valueType) {\n case 'date':\n return date;\n\n case 'timestamp':\n return date.getTime();\n\n case 'format':\n return this.formatDate(date);\n\n default:\n return this.formatDate(date, this.valueType);\n }\n },\n emitValue: function emitValue(date, type) {\n var close = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // fix IE11/10 trigger input event when input is focused. (placeholder !== '')\n this.userInput = null;\n var value = Array.isArray(date) ? date.map(this.date2value) : this.date2value(date);\n this.$emit('input', value);\n this.$emit('change', value, type);\n\n if (close) {\n this.closePopup();\n }\n\n return value;\n },\n isValidValue: function isValidValue(value) {\n if (this.validMultipleType) {\n return isValidDates(value);\n }\n\n if (this.range) {\n return isValidRangeDate(value);\n }\n\n return isValidDate(value);\n },\n isValidValueAndNotDisabled: function isValidValueAndNotDisabled(value) {\n if (!this.isValidValue(value)) {\n return false;\n }\n\n var disabledDate = typeof this.disabledDate === 'function' ? this.disabledDate : function () {\n return false;\n };\n var disabledTime = typeof this.disabledTime === 'function' ? this.disabledTime : function () {\n return false;\n };\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n return value.every(function (v) {\n return !disabledDate(v) && !disabledTime(v);\n });\n },\n handleMultipleDates: function handleMultipleDates(date, dates) {\n if (this.validMultipleType && dates) {\n var nextDates = dates.filter(function (v) {\n return v.getTime() !== date.getTime();\n });\n\n if (nextDates.length === dates.length) {\n nextDates.push(date);\n }\n\n return nextDates;\n }\n\n return date;\n },\n handleSelectDate: function handleSelectDate(val, type, dates) {\n val = this.handleMultipleDates(val, dates);\n\n if (this.confirm) {\n this.currentValue = val;\n } else {\n this.emitValue(val, type, // this.type === 'datetime', click the time should close popup\n !this.validMultipleType && (type === this.type || type === 'time'));\n }\n },\n clear: function clear() {\n this.emitValue(this.range ? [null, null] : null);\n this.$emit('clear');\n },\n handleClear: function handleClear(evt) {\n evt.stopPropagation();\n this.clear();\n },\n handleConfirmDate: function handleConfirmDate() {\n var value = this.emitValue(this.currentValue);\n this.$emit('confirm', value);\n },\n handleSelectShortcut: function handleSelectShortcut(evt) {\n var index = evt.currentTarget.getAttribute('data-index');\n var item = this.shortcuts[parseInt(index, 10)];\n\n if (isObject(item) && typeof item.onClick === 'function') {\n var date = item.onClick(this);\n\n if (date) {\n this.emitValue(date);\n }\n }\n },\n openPopup: function openPopup(evt) {\n if (this.popupVisible || this.disabled) return;\n this.defaultOpen = true;\n this.$emit('open', evt);\n this.$emit('update:open', true);\n },\n closePopup: function closePopup() {\n if (!this.popupVisible) return;\n this.defaultOpen = false;\n this.$emit('close');\n this.$emit('update:open', false);\n },\n blur: function blur() {\n // when use slot input\n if (this.$refs.input) {\n this.$refs.input.blur();\n }\n },\n focus: function focus() {\n if (this.$refs.input) {\n this.$refs.input.focus();\n }\n },\n handleInputChange: function handleInputChange() {\n var _this3 = this;\n\n if (!this.editable || this.userInput === null) return;\n var text = this.userInput.trim();\n this.userInput = null;\n\n if (text === '') {\n this.clear();\n return;\n }\n\n var date;\n\n if (this.validMultipleType) {\n date = text.split(this.innerRangeSeparator).map(function (v) {\n return _this3.parseDate(v.trim());\n });\n } else if (this.range) {\n var arr = text.split(this.innerRangeSeparator);\n\n if (arr.length !== 2) {\n // Maybe the separator during the day is the same as the separator for the date\n // eg: 2019-10-09-2020-01-02\n arr = text.split(this.innerRangeSeparator.trim());\n }\n\n date = arr.map(function (v) {\n return _this3.parseDate(v.trim());\n });\n } else {\n date = this.parseDate(text);\n }\n\n if (this.isValidValueAndNotDisabled(date)) {\n this.emitValue(date);\n this.blur();\n } else {\n this.$emit('input-error', text);\n }\n },\n handleInputInput: function handleInputInput(evt) {\n // slot input v-model\n this.userInput = typeof evt === 'string' ? evt : evt.target.value;\n },\n handleInputKeydown: function handleInputKeydown(evt) {\n var keyCode = evt.keyCode; // Tab 9 or Enter 13\n\n if (keyCode === 9) {\n this.closePopup();\n } else if (keyCode === 13) {\n this.handleInputChange();\n }\n },\n handleInputBlur: function handleInputBlur(evt) {\n // tab close\n this.$emit('blur', evt);\n },\n handleInputFocus: function handleInputFocus(evt) {\n this.openPopup(evt);\n this.$emit('focus', evt);\n },\n hasSlot: function hasSlot(name) {\n return !!(this.$slots[name] || this.$scopedSlots[name]);\n },\n renderSlot: function renderSlot(name, fallback, props) {\n var slotFn = this.$scopedSlots[name];\n\n if (slotFn) {\n return slotFn(props) || fallback;\n }\n\n return this.$slots[name] || fallback;\n },\n renderInput: function renderInput() {\n var h = this.$createElement;\n var prefixClass = this.prefixClass;\n\n var props = _objectSpread2({\n name: 'date',\n type: 'text',\n autocomplete: 'off',\n value: this.text,\n class: this.inputClass || \"\".concat(this.prefixClass, \"-input\"),\n readonly: !this.editable,\n disabled: this.disabled,\n placeholder: this.placeholder\n }, this.inputAttr);\n\n var value = props.value,\n className = props.class,\n attrs = _objectWithoutProperties(props, [\"value\", \"class\"]);\n\n var events = {\n keydown: this.handleInputKeydown,\n focus: this.handleInputFocus,\n blur: this.handleInputBlur,\n input: this.handleInputInput,\n change: this.handleInputChange\n };\n var input = this.renderSlot('input', h(\"input\", {\n \"domProps\": {\n \"value\": value\n },\n \"class\": className,\n \"attrs\": _objectSpread2({}, attrs),\n \"on\": _objectSpread2({}, events),\n \"ref\": \"input\"\n }), {\n props: props,\n events: events\n });\n var calendarIcon = this.type === 'time' ? h(__vue_component__$2) : h(__vue_component__$1); // remove touchstart event to avoid opens the popup while scrolling in mobile #469\n\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-input-wrapper\"),\n \"on\": {\n \"mouseenter\": this.handleMouseEnter,\n \"mouseleave\": this.handleMouseLeave,\n \"click\": this.openPopup\n },\n \"ref\": \"inputWrapper\"\n }, [input, this.showClearIcon ? h(\"i\", {\n \"class\": \"\".concat(prefixClass, \"-icon-clear\"),\n \"on\": {\n \"click\": this.handleClear\n }\n }, [this.renderSlot('icon-clear', h(__vue_component__$3))]) : h(\"i\", {\n \"class\": \"\".concat(prefixClass, \"-icon-calendar\")\n }, [this.renderSlot('icon-calendar', calendarIcon)])]);\n },\n renderContent: function renderContent() {\n var h = this.$createElement;\n var map = this.range ? componentRangeMap : componentMap;\n var Component = map[this.type] || map.default;\n\n var props = _objectSpread2({}, pick(this.$props, Object.keys(Component.props)), {\n value: this.currentValue\n });\n\n var on = _objectSpread2({}, pick(this.$listeners, Component.emits || []), {\n select: this.handleSelectDate\n });\n\n var content = h(Component, helper([{}, {\n props: props,\n on: on,\n ref: 'picker'\n }]));\n return h(\"div\", {\n \"class\": \"\".concat(this.prefixClass, \"-datepicker-body\")\n }, [this.renderSlot('content', content, {\n value: this.currentValue,\n emit: this.handleSelectDate\n })]);\n },\n renderSidebar: function renderSidebar() {\n var _this4 = this;\n\n var h = this.$createElement;\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-sidebar\")\n }, [this.renderSlot('sidebar', null, {\n value: this.currentValue,\n emit: this.handleSelectDate\n }), this.shortcuts.map(function (v, i) {\n return h(\"button\", {\n \"key\": i,\n \"attrs\": {\n \"data-index\": i,\n \"type\": \"button\"\n },\n \"class\": \"\".concat(prefixClass, \"-btn \").concat(prefixClass, \"-btn-text \").concat(prefixClass, \"-btn-shortcut\"),\n \"on\": {\n \"click\": _this4.handleSelectShortcut\n }\n }, [v.text]);\n })]);\n },\n renderHeader: function renderHeader() {\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": \"\".concat(this.prefixClass, \"-datepicker-header\")\n }, [this.renderSlot('header', null, {\n value: this.currentValue,\n emit: this.handleSelectDate\n })]);\n },\n renderFooter: function renderFooter() {\n var h = this.$createElement;\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-footer\")\n }, [this.renderSlot('footer', null, {\n value: this.currentValue,\n emit: this.handleSelectDate\n }), this.confirm ? h(\"button\", {\n \"attrs\": {\n \"type\": \"button\"\n },\n \"class\": \"\".concat(prefixClass, \"-btn \").concat(prefixClass, \"-datepicker-btn-confirm\"),\n \"on\": {\n \"click\": this.handleConfirmDate\n }\n }, [this.confirmText]) : null]);\n }\n },\n render: function render() {\n var _class;\n\n var h = arguments[0];\n var prefixClass = this.prefixClass,\n inline = this.inline,\n disabled = this.disabled;\n var sidedar = this.hasSlot('sidebar') || this.shortcuts.length ? this.renderSidebar() : null;\n var content = h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-content\")\n }, [this.hasSlot('header') ? this.renderHeader() : null, this.renderContent(), this.hasSlot('footer') || this.confirm ? this.renderFooter() : null]);\n return h(\"div\", {\n \"class\": (_class = {}, _defineProperty(_class, \"\".concat(prefixClass, \"-datepicker\"), true), _defineProperty(_class, \"\".concat(prefixClass, \"-datepicker-range\"), this.range), _defineProperty(_class, \"\".concat(prefixClass, \"-datepicker-inline\"), inline), _defineProperty(_class, \"disabled\", disabled), _class)\n }, [!inline ? this.renderInput() : null, !inline ? h(__vue_component__, {\n \"ref\": \"popup\",\n \"class\": this.popupClass,\n \"style\": this.popupStyle,\n \"attrs\": {\n \"visible\": this.popupVisible,\n \"appendToBody\": this.appendToBody\n },\n \"on\": {\n \"clickoutside\": this.handleClickOutSide\n }\n }, [sidedar, content]) : h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-main\")\n }, [sidedar, content])]);\n }\n};\n\nDatePicker.locale = locale;\n\nDatePicker.install = function install(Vue) {\n Vue.component(DatePicker.name, DatePicker);\n};\n\nif (typeof window !== 'undefined' && window.Vue) {\n DatePicker.install(window.Vue);\n}\n\n_extends(DatePicker, {\n CalendarPanel: CalendarPanel,\n CalendarRange: CalendarRange,\n TimePanel: __vue_component__$b,\n TimeRange: TimeRange,\n DatetimePanel: DatetimePanel,\n DatetimeRange: DatetimeRange\n});\n\nexport default DatePicker;\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\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 if (this.weeks) str += this.weeks + \"W\";\n if (this.days) str += this.days + \"D\";\n\n if (this.hours || this.minutes || this.seconds) {\n str += \"T\";\n if (this.hours) str += this.hours + \"H\";\n if (this.minutes) str += this.minutes + \"M\";\n if (this.seconds) str += this.seconds + \"S\";\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 * 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 * @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[19] && aValue[19] === '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 {Object} aData Time initialization\n * @param {Number=} aData.year The year for this date\n * @param {Number=} aData.month The month for this date\n * @param {Number=} aData.day The day for this date\n * @param {Number=} aData.hour The hour for this date\n * @param {Number=} aData.minute The minute for this date\n * @param {Number=} aData.second The second for this date\n * @param {Boolean=} aData.isDate If true, the instance represents a date\n * (as opposed to a date-time)\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 {Object} data Time initialization\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 {Boolean=} data.isDate If true, the instance represents a date (as\n * opposed to a date-time)\n * @param {Timezone} zone timezone this position occurs in\n */\n constructor(data, zone) {\n this.wrappedJSObject = this;\n let time = this._time = Object.create(null);\n\n /* time defaults */\n time.year = 0;\n time.month = 1;\n time.day = 1;\n time.hour = 0;\n time.minute = 0;\n time.second = 0;\n 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 * 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 {Object} aData Time initialization\n * @param {Number=} aData.year The year for this date\n * @param {Number=} aData.month The month for this date\n * @param {Number=} aData.day The day for this date\n * @param {Number=} aData.hour The hour for this date\n * @param {Number=} aData.minute The minute for this date\n * @param {Number=} aData.second The second for this date\n * @param {Boolean=} aData.isDate If true, the instance represents a date\n * (as opposed to a date-time)\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.\n *\n * @param {Duration} aOther The instance to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(other) {\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 * Compares only the date part of this instance with another one.\n *\n * @param {Duration} 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$1.icalendar.value['date-time'].toICAL(string);\n } else {\n return design$1.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(function setupNormalizeAttributes() {\n // This needs to run before any instances are created!\n function defineAttr(attr) {\n Object.defineProperty(Time.prototype, attr, {\n get: function getTimeAttr() {\n if (this._pendingNormalization) {\n this._normalize();\n this._pendingNormalization = false;\n }\n\n return this._time[attr];\n },\n set: function setTimeAttr(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 }\n\n defineAttr(\"year\");\n defineAttr(\"month\");\n defineAttr(\"day\");\n defineAttr(\"hour\");\n defineAttr(\"minute\");\n defineAttr(\"second\");\n defineAttr(\"isDate\");\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 * 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$1.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 lastParamIndex = parsedParams[1].length + 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$1.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$1.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 {Object} key/value pairs\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\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\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 * 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 updateTimezones: updateTimezones,\n isStrictlyNaN: isStrictlyNaN,\n strictParseInt: strictParseInt,\n formatClassType: formatClassType,\n unescapedIndexOf: unescapedIndexOf,\n binsearchInsert: binsearchInsert,\n clone: clone,\n foldline: foldline,\n pad2: pad2,\n trunc: trunc,\n extend: extend\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 * 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$1.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 * 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 {ICAL.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$1.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$1.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 * 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 // If the BYYEARDAY appares, no other date rule part may appear\n if (\"BYYEARDAY\" in parts) {\n if (\"BYMONTH\" in parts || \"BYWEEKNO\" in parts ||\n \"BYMONTHDAY\" in parts || \"BYDAY\" 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 this._nextByYearDay();\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 Error(\"No possible occurrences\");\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 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 break;\n case \"YEARLY\":\n this.next_year();\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_index == this.days.length) {\n this.days_index = 0;\n do {\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 } while (this.days.length == 0);\n }\n\n this._nextByYearDay();\n\n return 1;\n }\n\n _nextByYearDay() {\n let doy = this.days[this.days_index];\n let year = this.last.year;\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\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 {\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 * 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$1.icalendar.value['date-time'].fromICAL(value);\n } else {\n dict.until = design$1.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 * 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 * 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 * 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: icalValues.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 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 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 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};\nvar design$1 = design;\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 * 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$1.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$1.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$1.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$1.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$1.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$1.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 * 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\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 return parentDesign || design$1.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 * 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 * 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 compare = this.exDate.compare(this.last);\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 this.exDateInc = binsearchInsert(\n this.exDates,\n this.last,\n (a, b) => a.compare(b)\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 * 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 * 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 * 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: design$1,\n helpers\n};\n\nexport { ICALmodule as default };\n","import ICAL from \"ical.js\";\nfunction getSortedTimezoneList(timezoneList = [], additionalTimezones = [], globalTimezoneName = \"Global\") {\n const sortedByContinent = /* @__PURE__ */ new Map();\n for (const timezoneId of timezoneList) {\n const components = timezoneId.split(\"/\");\n let [continent, name] = [components.shift(), components.join(\"/\")];\n if (!name) {\n name = continent;\n continent = globalTimezoneName;\n }\n if (!sortedByContinent.has(continent)) {\n sortedByContinent.set(continent, {\n continent,\n regions: []\n });\n }\n sortedByContinent.get(continent).regions.push({\n label: getReadableTimezoneName(name),\n cities: [],\n timezoneId\n });\n }\n for (const { continent, label, timezoneId } of additionalTimezones) {\n if (!sortedByContinent.has(continent)) {\n sortedByContinent.set(continent, {\n continent,\n regions: []\n });\n }\n sortedByContinent.get(continent).regions.push({\n label,\n cities: [],\n timezoneId\n });\n }\n const sortedList = [...sortedByContinent.values()].sort((a, b) => a.continent.localeCompare(b.continent));\n for (const { regions } of sortedList) {\n regions.sort((a, b) => a.label.localeCompare(b.label));\n }\n return sortedList;\n}\nfunction getReadableTimezoneName(timezoneId) {\n return timezoneId.split(\"_\").join(\" \").replace(\"St \", \"St. \").split(\"/\").join(\" - \");\n}\nfunction isOlsonTimezone(tzName) {\n const hasSlash = tzName.includes(\"/\");\n const hasSpace = tzName.includes(\" \");\n const startsWithETC = tzName.startsWith(\"Etc\");\n const startsWithUS = tzName.startsWith(\"US/\");\n return hasSlash && !hasSpace && !startsWithETC && !startsWithUS;\n}\nclass Timezone {\n /**\n * Id of the timezone.\n */\n _timezoneId;\n /**\n * ICS representation of the timezone\n */\n _ics;\n _timezone;\n _initialized;\n constructor(timezoneId, ics) {\n if (timezoneId instanceof ICAL.Timezone) {\n this._timezone = timezoneId;\n this._initialized = true;\n } else if (timezoneId instanceof ICAL.Component) {\n this._timezone = new ICAL.Timezone(timezoneId);\n this._initialized = true;\n } else {\n this._timezoneId = timezoneId;\n this._ics = ics;\n this._initialized = false;\n }\n }\n /**\n * Get the timezone id\n */\n get timezoneId() {\n if (this._initialized) {\n return this._timezone.tzid;\n }\n return this._timezoneId;\n }\n /**\n * Get the UTC Offset for a given date in this timezone.\n *\n * @param year - Year of the date\n * @param month - Month of the date (1-based)\n * @param day - Day of the date\n * @param hour - Hour of the date\n * @param minute - Minute of the date\n * @param second - Second of the date\n */\n offsetForArray(year, month, day, hour, minute, second) {\n const time = new ICAL.Time({\n year,\n month,\n day,\n hour,\n minute,\n second,\n isDate: false\n });\n return this.timezone.utcOffset(time);\n }\n /**\n * Converts a timestamp to an array of year, month, day, hour, minute, second.\n *\n * @param {number} ms Timestamp in milliseconds\n * @return {number[]}\n */\n timestampToArray(ms) {\n const time = ICAL.Time.fromData({\n year: 1970,\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0\n });\n time.fromUnixTime(Math.floor(ms / 1e3));\n const local = time.convertToZone(this.timezone);\n return [\n local.year,\n local.month,\n // THIS is 1-based !\n local.day,\n local.hour,\n local.minute,\n local.second\n ];\n }\n toICALTimezone() {\n return this.timezone;\n }\n /**\n * Returns the corresponding ICAL.\n */\n toICALJs() {\n return this.timezone.component;\n }\n /**\n * Initializes the inner ICAL.Timezone component if not already done.\n */\n get timezone() {\n if (!this._initialized) {\n const jCal = ICAL.parse(this._ics);\n const iCalComponent = new ICAL.Component(jCal);\n this._timezone = new ICAL.Timezone(iCalComponent);\n this._initialized = true;\n }\n return this._timezone;\n }\n static get utc() {\n return new Timezone(ICAL.Timezone.utcTimezone);\n }\n static get floating() {\n return new Timezone(ICAL.Timezone.localTimezone);\n }\n}\nconst version = \"2.2024a\";\nconst aliases = {\n \"AUS Central Standard Time\": {\n aliasTo: \"Australia/Darwin\"\n },\n \"AUS Eastern Standard Time\": {\n aliasTo: \"Australia/Sydney\"\n },\n \"Afghanistan Standard Time\": {\n aliasTo: \"Asia/Kabul\"\n },\n \"Africa/Asmera\": {\n aliasTo: \"Africa/Asmara\"\n },\n \"Africa/Timbuktu\": {\n aliasTo: \"Africa/Bamako\"\n },\n \"Alaskan Standard Time\": {\n aliasTo: \"America/Anchorage\"\n },\n \"America/Argentina/ComodRivadavia\": {\n aliasTo: \"America/Argentina/Catamarca\"\n },\n \"America/Buenos_Aires\": {\n aliasTo: \"America/Argentina/Buenos_Aires\"\n },\n \"America/Louisville\": {\n aliasTo: \"America/Kentucky/Louisville\"\n },\n \"America/Montreal\": {\n aliasTo: \"America/Toronto\"\n },\n \"America/Santa_Isabel\": {\n aliasTo: \"America/Tijuana\"\n },\n \"Arab Standard Time\": {\n aliasTo: \"Asia/Riyadh\"\n },\n \"Arabian Standard Time\": {\n aliasTo: \"Asia/Dubai\"\n },\n \"Arabic Standard Time\": {\n aliasTo: \"Asia/Baghdad\"\n },\n \"Argentina Standard Time\": {\n aliasTo: \"America/Argentina/Buenos_Aires\"\n },\n \"Asia/Calcutta\": {\n aliasTo: \"Asia/Kolkata\"\n },\n \"Asia/Katmandu\": {\n aliasTo: \"Asia/Kathmandu\"\n },\n \"Asia/Rangoon\": {\n aliasTo: \"Asia/Yangon\"\n },\n \"Asia/Saigon\": {\n aliasTo: \"Asia/Ho_Chi_Minh\"\n },\n \"Atlantic Standard Time\": {\n aliasTo: \"America/Halifax\"\n },\n \"Atlantic/Faeroe\": {\n aliasTo: \"Atlantic/Faroe\"\n },\n \"Atlantic/Jan_Mayen\": {\n aliasTo: \"Europe/Oslo\"\n },\n \"Azerbaijan Standard Time\": {\n aliasTo: \"Asia/Baku\"\n },\n \"Azores Standard Time\": {\n aliasTo: \"Atlantic/Azores\"\n },\n \"Bahia Standard Time\": {\n aliasTo: \"America/Bahia\"\n },\n \"Bangladesh Standard Time\": {\n aliasTo: \"Asia/Dhaka\"\n },\n \"Belarus Standard Time\": {\n aliasTo: \"Europe/Minsk\"\n },\n \"Canada Central Standard Time\": {\n aliasTo: \"America/Regina\"\n },\n \"Cape Verde Standard Time\": {\n aliasTo: \"Atlantic/Cape_Verde\"\n },\n \"Caucasus Standard Time\": {\n aliasTo: \"Asia/Yerevan\"\n },\n \"Cen. Australia Standard Time\": {\n aliasTo: \"Australia/Adelaide\"\n },\n \"Central America Standard Time\": {\n aliasTo: \"America/Guatemala\"\n },\n \"Central Asia Standard Time\": {\n aliasTo: \"Asia/Almaty\"\n },\n \"Central Brazilian Standard Time\": {\n aliasTo: \"America/Cuiaba\"\n },\n \"Central Europe Standard Time\": {\n aliasTo: \"Europe/Budapest\"\n },\n \"Central European Standard Time\": {\n aliasTo: \"Europe/Warsaw\"\n },\n \"Central Pacific Standard Time\": {\n aliasTo: \"Pacific/Guadalcanal\"\n },\n \"Central Standard Time\": {\n aliasTo: \"America/Chicago\"\n },\n \"Central Standard Time (Mexico)\": {\n aliasTo: \"America/Mexico_City\"\n },\n \"China Standard Time\": {\n aliasTo: \"Asia/Shanghai\"\n },\n \"E. Africa Standard Time\": {\n aliasTo: \"Africa/Nairobi\"\n },\n \"E. Australia Standard Time\": {\n aliasTo: \"Australia/Brisbane\"\n },\n \"E. South America Standard Time\": {\n aliasTo: \"America/Sao_Paulo\"\n },\n \"Eastern Standard Time\": {\n aliasTo: \"America/New_York\"\n },\n \"Egypt Standard Time\": {\n aliasTo: \"Africa/Cairo\"\n },\n \"Ekaterinburg Standard Time\": {\n aliasTo: \"Asia/Yekaterinburg\"\n },\n \"Etc/GMT\": {\n aliasTo: \"UTC\"\n },\n \"Etc/GMT+0\": {\n aliasTo: \"UTC\"\n },\n \"Etc/UCT\": {\n aliasTo: \"UTC\"\n },\n \"Etc/UTC\": {\n aliasTo: \"UTC\"\n },\n \"Etc/Unversal\": {\n aliasTo: \"UTC\"\n },\n \"Etc/Zulu\": {\n aliasTo: \"UTC\"\n },\n \"Europe/Belfast\": {\n aliasTo: \"Europe/London\"\n },\n \"FLE Standard Time\": {\n aliasTo: \"Europe/Kiev\"\n },\n \"Fiji Standard Time\": {\n aliasTo: \"Pacific/Fiji\"\n },\n GMT: {\n aliasTo: \"UTC\"\n },\n \"GMT Standard Time\": {\n aliasTo: \"Europe/London\"\n },\n \"GMT+0\": {\n aliasTo: \"UTC\"\n },\n GMT0: {\n aliasTo: \"UTC\"\n },\n \"GTB Standard Time\": {\n aliasTo: \"Europe/Bucharest\"\n },\n \"Georgian Standard Time\": {\n aliasTo: \"Asia/Tbilisi\"\n },\n \"Greenland Standard Time\": {\n aliasTo: \"America/Godthab\"\n },\n Greenwich: {\n aliasTo: \"UTC\"\n },\n \"Greenwich Standard Time\": {\n aliasTo: \"Atlantic/Reykjavik\"\n },\n \"Hawaiian Standard Time\": {\n aliasTo: \"Pacific/Honolulu\"\n },\n \"India Standard Time\": {\n aliasTo: \"Asia/Calcutta\"\n },\n \"Iran Standard Time\": {\n aliasTo: \"Asia/Tehran\"\n },\n \"Israel Standard Time\": {\n aliasTo: \"Asia/Jerusalem\"\n },\n \"Jordan Standard Time\": {\n aliasTo: \"Asia/Amman\"\n },\n \"Kaliningrad Standard Time\": {\n aliasTo: \"Europe/Kaliningrad\"\n },\n \"Korea Standard Time\": {\n aliasTo: \"Asia/Seoul\"\n },\n \"Libya Standard Time\": {\n aliasTo: \"Africa/Tripoli\"\n },\n \"Line Islands Standard Time\": {\n aliasTo: \"Pacific/Kiritimati\"\n },\n \"Magadan Standard Time\": {\n aliasTo: \"Asia/Magadan\"\n },\n \"Mauritius Standard Time\": {\n aliasTo: \"Indian/Mauritius\"\n },\n \"Middle East Standard Time\": {\n aliasTo: \"Asia/Beirut\"\n },\n \"Montevideo Standard Time\": {\n aliasTo: \"America/Montevideo\"\n },\n \"Morocco Standard Time\": {\n aliasTo: \"Africa/Casablanca\"\n },\n \"Mountain Standard Time\": {\n aliasTo: \"America/Denver\"\n },\n \"Mountain Standard Time (Mexico)\": {\n aliasTo: \"America/Chihuahua\"\n },\n \"Myanmar Standard Time\": {\n aliasTo: \"Asia/Rangoon\"\n },\n \"N. Central Asia Standard Time\": {\n aliasTo: \"Asia/Novosibirsk\"\n },\n \"Namibia Standard Time\": {\n aliasTo: \"Africa/Windhoek\"\n },\n \"Nepal Standard Time\": {\n aliasTo: \"Asia/Katmandu\"\n },\n \"New Zealand Standard Time\": {\n aliasTo: \"Pacific/Auckland\"\n },\n \"Newfoundland Standard Time\": {\n aliasTo: \"America/St_Johns\"\n },\n \"North Asia East Standard Time\": {\n aliasTo: \"Asia/Irkutsk\"\n },\n \"North Asia Standard Time\": {\n aliasTo: \"Asia/Krasnoyarsk\"\n },\n \"Pacific SA Standard Time\": {\n aliasTo: \"America/Santiago\"\n },\n \"Pacific Standard Time\": {\n aliasTo: \"America/Los_Angeles\"\n },\n \"Pacific Standard Time (Mexico)\": {\n aliasTo: \"America/Santa_Isabel\"\n },\n \"Pacific/Johnston\": {\n aliasTo: \"Pacific/Honolulu\"\n },\n \"Pakistan Standard Time\": {\n aliasTo: \"Asia/Karachi\"\n },\n \"Paraguay Standard Time\": {\n aliasTo: \"America/Asuncion\"\n },\n \"Romance Standard Time\": {\n aliasTo: \"Europe/Paris\"\n },\n \"Russia Time Zone 10\": {\n aliasTo: \"Asia/Srednekolymsk\"\n },\n \"Russia Time Zone 11\": {\n aliasTo: \"Asia/Kamchatka\"\n },\n \"Russia Time Zone 3\": {\n aliasTo: \"Europe/Samara\"\n },\n \"Russian Standard Time\": {\n aliasTo: \"Europe/Moscow\"\n },\n \"SA Eastern Standard Time\": {\n aliasTo: \"America/Cayenne\"\n },\n \"SA Pacific Standard Time\": {\n aliasTo: \"America/Bogota\"\n },\n \"SA Western Standard Time\": {\n aliasTo: \"America/La_Paz\"\n },\n \"SE Asia Standard Time\": {\n aliasTo: \"Asia/Bangkok\"\n },\n \"Samoa Standard Time\": {\n aliasTo: \"Pacific/Apia\"\n },\n \"Singapore Standard Time\": {\n aliasTo: \"Asia/Singapore\"\n },\n \"South Africa Standard Time\": {\n aliasTo: \"Africa/Johannesburg\"\n },\n \"Sri Lanka Standard Time\": {\n aliasTo: \"Asia/Colombo\"\n },\n \"Syria Standard Time\": {\n aliasTo: \"Asia/Damascus\"\n },\n \"Taipei Standard Time\": {\n aliasTo: \"Asia/Taipei\"\n },\n \"Tasmania Standard Time\": {\n aliasTo: \"Australia/Hobart\"\n },\n \"Tokyo Standard Time\": {\n aliasTo: \"Asia/Tokyo\"\n },\n \"Tonga Standard Time\": {\n aliasTo: \"Pacific/Tongatapu\"\n },\n \"Turkey Standard Time\": {\n aliasTo: \"Europe/Istanbul\"\n },\n UCT: {\n aliasTo: \"UTC\"\n },\n \"US Eastern Standard Time\": {\n aliasTo: \"America/Indiana/Indianapolis\"\n },\n \"US Mountain Standard Time\": {\n aliasTo: \"America/Phoenix\"\n },\n \"US/Central\": {\n aliasTo: \"America/Chicago\"\n },\n \"US/Eastern\": {\n aliasTo: \"America/New_York\"\n },\n \"US/Mountain\": {\n aliasTo: \"America/Denver\"\n },\n \"US/Pacific\": {\n aliasTo: \"America/Los_Angeles\"\n },\n \"US/Pacific-New\": {\n aliasTo: \"America/Los_Angeles\"\n },\n \"Ulaanbaatar Standard Time\": {\n aliasTo: \"Asia/Ulaanbaatar\"\n },\n Universal: {\n aliasTo: \"UTC\"\n },\n \"Venezuela Standard Time\": {\n aliasTo: \"America/Caracas\"\n },\n \"Vladivostok Standard Time\": {\n aliasTo: \"Asia/Vladivostok\"\n },\n \"W. Australia Standard Time\": {\n aliasTo: \"Australia/Perth\"\n },\n \"W. Central Africa Standard Time\": {\n aliasTo: \"Africa/Lagos\"\n },\n \"W. Europe Standard Time\": {\n aliasTo: \"Europe/Berlin\"\n },\n \"West Asia Standard Time\": {\n aliasTo: \"Asia/Tashkent\"\n },\n \"West Pacific Standard Time\": {\n aliasTo: \"Pacific/Port_Moresby\"\n },\n \"Yakutsk Standard Time\": {\n aliasTo: \"Asia/Yakutsk\"\n },\n Z: {\n aliasTo: \"UTC\"\n },\n Zulu: {\n aliasTo: \"UTC\"\n },\n utc: {\n aliasTo: \"UTC\"\n }\n};\nconst zones = {\n \"Africa/Abidjan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0051900\",\n longitude: \"-0040200\"\n },\n \"Africa/Accra\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Addis_Ababa\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Algiers\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0364700\",\n longitude: \"+0030300\"\n },\n \"Africa/Asmara\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Asmera\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Bamako\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Bangui\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Banjul\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Bissau\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0115100\",\n longitude: \"-0153500\"\n },\n \"Africa/Blantyre\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Brazzaville\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Bujumbura\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Cairo\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700424T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1FR\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701030T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0300300\",\n longitude: \"+0311500\"\n },\n \"Africa/Casablanca\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:+01\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0333900\",\n longitude: \"-0073500\"\n },\n \"Africa/Ceuta\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0355300\",\n longitude: \"-0051900\"\n },\n \"Africa/Conakry\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Dakar\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Dar_es_Salaam\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Djibouti\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Douala\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/El_Aaiun\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:+01\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0270900\",\n longitude: \"-0131200\"\n },\n \"Africa/Freetown\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Gaborone\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Harare\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Johannesburg\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:SAST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0261500\",\n longitude: \"+0280000\"\n },\n \"Africa/Juba\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0045100\",\n longitude: \"+0313700\"\n },\n \"Africa/Kampala\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Khartoum\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0153600\",\n longitude: \"+0323200\"\n },\n \"Africa/Kigali\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Kinshasa\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Lagos\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0062700\",\n longitude: \"+0032400\"\n },\n \"Africa/Libreville\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Lome\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Luanda\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Lubumbashi\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Lusaka\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Malabo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Maputo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0255800\",\n longitude: \"+0323500\"\n },\n \"Africa/Maseru\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:SAST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Mbabane\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:SAST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Mogadishu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Monrovia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0061800\",\n longitude: \"-0104700\"\n },\n \"Africa/Nairobi\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0011700\",\n longitude: \"+0364900\"\n },\n \"Africa/Ndjamena\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0120700\",\n longitude: \"+0150300\"\n },\n \"Africa/Niamey\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Nouakchott\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Ouagadougou\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Porto-Novo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Sao_Tome\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0002000\",\n longitude: \"+0064400\"\n },\n \"Africa/Timbuktu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Africa/Tripoli\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0325400\",\n longitude: \"+0131100\"\n },\n \"Africa/Tunis\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0364800\",\n longitude: \"+0101100\"\n },\n \"Africa/Windhoek\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0223400\",\n longitude: \"+0170600\"\n },\n \"America/Adak\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:HDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:HST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0515248\",\n longitude: \"-1763929\"\n },\n \"America/Anchorage\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0611305\",\n longitude: \"-1495401\"\n },\n \"America/Anguilla\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Antigua\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Araguaina\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0071200\",\n longitude: \"-0481200\"\n },\n \"America/Argentina/Buenos_Aires\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0343600\",\n longitude: \"-0582700\"\n },\n \"America/Argentina/Catamarca\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0282800\",\n longitude: \"-0654700\"\n },\n \"America/Argentina/ComodRivadavia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Argentina/Cordoba\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0312400\",\n longitude: \"-0641100\"\n },\n \"America/Argentina/Jujuy\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0241100\",\n longitude: \"-0651800\"\n },\n \"America/Argentina/La_Rioja\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0292600\",\n longitude: \"-0665100\"\n },\n \"America/Argentina/Mendoza\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0325300\",\n longitude: \"-0684900\"\n },\n \"America/Argentina/Rio_Gallegos\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0513800\",\n longitude: \"-0691300\"\n },\n \"America/Argentina/Salta\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0244700\",\n longitude: \"-0652500\"\n },\n \"America/Argentina/San_Juan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0313200\",\n longitude: \"-0683100\"\n },\n \"America/Argentina/San_Luis\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0331900\",\n longitude: \"-0662100\"\n },\n \"America/Argentina/Tucuman\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0264900\",\n longitude: \"-0651300\"\n },\n \"America/Argentina/Ushuaia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0544800\",\n longitude: \"-0681800\"\n },\n \"America/Aruba\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Asuncion\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19701004T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700322T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=4SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0251600\",\n longitude: \"-0574000\"\n },\n \"America/Atikokan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Atka\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:HDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:HST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Bahia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0125900\",\n longitude: \"-0383100\"\n },\n \"America/Bahia_Banderas\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0204800\",\n longitude: \"-1051500\"\n },\n \"America/Barbados\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0130600\",\n longitude: \"-0593700\"\n },\n \"America/Belem\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0012700\",\n longitude: \"-0482900\"\n },\n \"America/Belize\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0173000\",\n longitude: \"-0881200\"\n },\n \"America/Blanc-Sablon\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Boa_Vista\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0024900\",\n longitude: \"-0604000\"\n },\n \"America/Bogota\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0043600\",\n longitude: \"-0740500\"\n },\n \"America/Boise\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0433649\",\n longitude: \"-1161209\"\n },\n \"America/Buenos_Aires\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Cambridge_Bay\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0690650\",\n longitude: \"-1050310\"\n },\n \"America/Campo_Grande\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0202700\",\n longitude: \"-0543700\"\n },\n \"America/Cancun\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0210500\",\n longitude: \"-0864600\"\n },\n \"America/Caracas\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0103000\",\n longitude: \"-0665600\"\n },\n \"America/Catamarca\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Cayenne\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0045600\",\n longitude: \"-0522000\"\n },\n \"America/Cayman\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Chicago\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0415100\",\n longitude: \"-0873900\"\n },\n \"America/Chihuahua\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0283800\",\n longitude: \"-1060500\"\n },\n \"America/Ciudad_Juarez\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0314400\",\n longitude: \"-1062900\"\n },\n \"America/Coral_Harbour\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Cordoba\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Costa_Rica\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0095600\",\n longitude: \"-0840500\"\n },\n \"America/Creston\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Cuiaba\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0153500\",\n longitude: \"-0560500\"\n },\n \"America/Curacao\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Danmarkshavn\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0764600\",\n longitude: \"-0184000\"\n },\n \"America/Dawson\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0640400\",\n longitude: \"-1392500\"\n },\n \"America/Dawson_Creek\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0554600\",\n longitude: \"-1201400\"\n },\n \"America/Denver\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0394421\",\n longitude: \"-1045903\"\n },\n \"America/Detroit\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0421953\",\n longitude: \"-0830245\"\n },\n \"America/Dominica\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Edmonton\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0533300\",\n longitude: \"-1132800\"\n },\n \"America/Eirunepe\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0064000\",\n longitude: \"-0695200\"\n },\n \"America/El_Salvador\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0134200\",\n longitude: \"-0891200\"\n },\n \"America/Ensenada\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Fort_Nelson\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0584800\",\n longitude: \"-1224200\"\n },\n \"America/Fort_Wayne\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Fortaleza\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0034300\",\n longitude: \"-0383000\"\n },\n \"America/Glace_Bay\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0461200\",\n longitude: \"-0595700\"\n },\n \"America/Godthab\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0100\\r\\nTZNAME:-01\\r\\nDTSTART:19700328T230000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0100\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19701025T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Goose_Bay\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0532000\",\n longitude: \"-0602500\"\n },\n \"America/Grand_Turk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0212800\",\n longitude: \"-0710800\"\n },\n \"America/Grenada\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Guadeloupe\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Guatemala\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0143800\",\n longitude: \"-0903100\"\n },\n \"America/Guayaquil\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0021000\",\n longitude: \"-0795000\"\n },\n \"America/Guyana\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0064800\",\n longitude: \"-0581000\"\n },\n \"America/Halifax\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0443900\",\n longitude: \"-0633600\"\n },\n \"America/Havana\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0230800\",\n longitude: \"-0822200\"\n },\n \"America/Hermosillo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0290400\",\n longitude: \"-1105800\"\n },\n \"America/Indiana/Indianapolis\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0394606\",\n longitude: \"-0860929\"\n },\n \"America/Indiana/Knox\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0411745\",\n longitude: \"-0863730\"\n },\n \"America/Indiana/Marengo\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0382232\",\n longitude: \"-0862041\"\n },\n \"America/Indiana/Petersburg\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0382931\",\n longitude: \"-0871643\"\n },\n \"America/Indiana/Tell_City\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0375711\",\n longitude: \"-0864541\"\n },\n \"America/Indiana/Vevay\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0384452\",\n longitude: \"-0850402\"\n },\n \"America/Indiana/Vincennes\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0384038\",\n longitude: \"-0873143\"\n },\n \"America/Indiana/Winamac\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0410305\",\n longitude: \"-0863611\"\n },\n \"America/Indianapolis\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Inuvik\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0682059\",\n longitude: \"-1334300\"\n },\n \"America/Iqaluit\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0634400\",\n longitude: \"-0682800\"\n },\n \"America/Jamaica\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0175805\",\n longitude: \"-0764736\"\n },\n \"America/Jujuy\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Juneau\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0581807\",\n longitude: \"-1342511\"\n },\n \"America/Kentucky/Louisville\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0381515\",\n longitude: \"-0854534\"\n },\n \"America/Kentucky/Monticello\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0364947\",\n longitude: \"-0845057\"\n },\n \"America/Knox_IN\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Kralendijk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/La_Paz\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0163000\",\n longitude: \"-0680900\"\n },\n \"America/Lima\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0120300\",\n longitude: \"-0770300\"\n },\n \"America/Los_Angeles\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0340308\",\n longitude: \"-1181434\"\n },\n \"America/Louisville\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Lower_Princes\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Maceio\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0094000\",\n longitude: \"-0354300\"\n },\n \"America/Managua\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0120900\",\n longitude: \"-0861700\"\n },\n \"America/Manaus\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0030800\",\n longitude: \"-0600100\"\n },\n \"America/Marigot\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Martinique\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0143600\",\n longitude: \"-0610500\"\n },\n \"America/Matamoros\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0255000\",\n longitude: \"-0973000\"\n },\n \"America/Mazatlan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0231300\",\n longitude: \"-1062500\"\n },\n \"America/Mendoza\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Menominee\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0450628\",\n longitude: \"-0873651\"\n },\n \"America/Merida\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0205800\",\n longitude: \"-0893700\"\n },\n \"America/Metlakatla\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0550737\",\n longitude: \"-1313435\"\n },\n \"America/Mexico_City\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0192400\",\n longitude: \"-0990900\"\n },\n \"America/Miquelon\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0470300\",\n longitude: \"-0562000\"\n },\n \"America/Moncton\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0460600\",\n longitude: \"-0644700\"\n },\n \"America/Monterrey\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0254000\",\n longitude: \"-1001900\"\n },\n \"America/Montevideo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0345433\",\n longitude: \"-0561245\"\n },\n \"America/Montreal\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Montserrat\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Nassau\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/New_York\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0404251\",\n longitude: \"-0740023\"\n },\n \"America/Nipigon\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Nome\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0643004\",\n longitude: \"-1652423\"\n },\n \"America/Noronha\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0035100\",\n longitude: \"-0322500\"\n },\n \"America/North_Dakota/Beulah\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0471551\",\n longitude: \"-1014640\"\n },\n \"America/North_Dakota/Center\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0470659\",\n longitude: \"-1011757\"\n },\n \"America/North_Dakota/New_Salem\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0465042\",\n longitude: \"-1012439\"\n },\n \"America/Nuuk\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0100\\r\\nTZNAME:-01\\r\\nDTSTART:19700328T230000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0100\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19701025T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0641100\",\n longitude: \"-0514400\"\n },\n \"America/Ojinaga\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0293400\",\n longitude: \"-1042500\"\n },\n \"America/Panama\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0085800\",\n longitude: \"-0793200\"\n },\n \"America/Pangnirtung\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Paramaribo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0055000\",\n longitude: \"-0551000\"\n },\n \"America/Phoenix\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0332654\",\n longitude: \"-1120424\"\n },\n \"America/Port-au-Prince\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0183200\",\n longitude: \"-0722000\"\n },\n \"America/Port_of_Spain\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Porto_Acre\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Porto_Velho\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0084600\",\n longitude: \"-0635400\"\n },\n \"America/Puerto_Rico\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0182806\",\n longitude: \"-0660622\"\n },\n \"America/Punta_Arenas\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0530900\",\n longitude: \"-0705500\"\n },\n \"America/Rainy_River\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Rankin_Inlet\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0624900\",\n longitude: \"-0920459\"\n },\n \"America/Recife\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0080300\",\n longitude: \"-0345400\"\n },\n \"America/Regina\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0502400\",\n longitude: \"-1043900\"\n },\n \"America/Resolute\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0744144\",\n longitude: \"-0944945\"\n },\n \"America/Rio_Branco\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0095800\",\n longitude: \"-0674800\"\n },\n \"America/Rosario\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Santa_Isabel\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Santarem\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0022600\",\n longitude: \"-0545200\"\n },\n \"America/Santiago\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700405T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700906T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0332700\",\n longitude: \"-0704000\"\n },\n \"America/Santo_Domingo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0182800\",\n longitude: \"-0695400\"\n },\n \"America/Sao_Paulo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0233200\",\n longitude: \"-0463700\"\n },\n \"America/Scoresbysund\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0100\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19701025T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0100\\r\\nTZNAME:-01\\r\\nDTSTART:19700328T230000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0702900\",\n longitude: \"-0215800\"\n },\n \"America/Shiprock\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Sitka\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0571035\",\n longitude: \"-1351807\"\n },\n \"America/St_Barthelemy\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/St_Johns\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0230\\r\\nTZOFFSETTO:-0330\\r\\nTZNAME:NST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0330\\r\\nTZOFFSETTO:-0230\\r\\nTZNAME:NDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0473400\",\n longitude: \"-0524300\"\n },\n \"America/St_Kitts\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/St_Lucia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/St_Thomas\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/St_Vincent\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Swift_Current\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0501700\",\n longitude: \"-1075000\"\n },\n \"America/Tegucigalpa\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0140600\",\n longitude: \"-0871300\"\n },\n \"America/Thule\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0763400\",\n longitude: \"-0684700\"\n },\n \"America/Thunder_Bay\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Tijuana\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0323200\",\n longitude: \"-1170100\"\n },\n \"America/Toronto\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0433900\",\n longitude: \"-0792300\"\n },\n \"America/Tortola\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Vancouver\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0491600\",\n longitude: \"-1230700\"\n },\n \"America/Virgin\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"America/Whitehorse\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0604300\",\n longitude: \"-1350300\"\n },\n \"America/Winnipeg\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0495300\",\n longitude: \"-0970900\"\n },\n \"America/Yakutat\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0593249\",\n longitude: \"-1394338\"\n },\n \"America/Yellowknife\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Antarctica/Casey\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0661700\",\n longitude: \"+1103100\"\n },\n \"Antarctica/Davis\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0683500\",\n longitude: \"+0775800\"\n },\n \"Antarctica/DumontDUrville\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Antarctica/Macquarie\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0543000\",\n longitude: \"+1585700\"\n },\n \"Antarctica/Mawson\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0673600\",\n longitude: \"+0625300\"\n },\n \"Antarctica/McMurdo\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:NZDT\\r\\nDTSTART:19700927T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:NZST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Antarctica/Palmer\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0644800\",\n longitude: \"-0640600\"\n },\n \"Antarctica/Rothera\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0673400\",\n longitude: \"-0680800\"\n },\n \"Antarctica/South_Pole\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:NZDT\\r\\nDTSTART:19700927T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:NZST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Antarctica/Syowa\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Antarctica/Troll\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:+02\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:+00\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0720041\",\n longitude: \"+0023206\"\n },\n \"Antarctica/Vostok\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0782400\",\n longitude: \"+1065400\"\n },\n \"Arctic/Longyearbyen\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Aden\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Almaty\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0431500\",\n longitude: \"+0765700\"\n },\n \"Asia/Amman\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0315700\",\n longitude: \"+0355600\"\n },\n \"Asia/Anadyr\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0644500\",\n longitude: \"+1772900\"\n },\n \"Asia/Aqtau\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0443100\",\n longitude: \"+0501600\"\n },\n \"Asia/Aqtobe\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0501700\",\n longitude: \"+0571000\"\n },\n \"Asia/Ashgabat\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0375700\",\n longitude: \"+0582300\"\n },\n \"Asia/Ashkhabad\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Atyrau\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0470700\",\n longitude: \"+0515600\"\n },\n \"Asia/Baghdad\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0332100\",\n longitude: \"+0442500\"\n },\n \"Asia/Bahrain\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Baku\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0402300\",\n longitude: \"+0495100\"\n },\n \"Asia/Bangkok\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0134500\",\n longitude: \"+1003100\"\n },\n \"Asia/Barnaul\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0532200\",\n longitude: \"+0834500\"\n },\n \"Asia/Beirut\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0335300\",\n longitude: \"+0353000\"\n },\n \"Asia/Bishkek\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0425400\",\n longitude: \"+0743600\"\n },\n \"Asia/Brunei\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Calcutta\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0530\\r\\nTZOFFSETTO:+0530\\r\\nTZNAME:IST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Chita\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0520300\",\n longitude: \"+1132800\"\n },\n \"Asia/Choibalsan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0480400\",\n longitude: \"+1143000\"\n },\n \"Asia/Chongqing\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Chungking\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Colombo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0530\\r\\nTZOFFSETTO:+0530\\r\\nTZNAME:+0530\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0065600\",\n longitude: \"+0795100\"\n },\n \"Asia/Dacca\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Damascus\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0333000\",\n longitude: \"+0361800\"\n },\n \"Asia/Dhaka\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0234300\",\n longitude: \"+0902500\"\n },\n \"Asia/Dili\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0083300\",\n longitude: \"+1253500\"\n },\n \"Asia/Dubai\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0251800\",\n longitude: \"+0551800\"\n },\n \"Asia/Dushanbe\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0383500\",\n longitude: \"+0684800\"\n },\n \"Asia/Famagusta\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0350700\",\n longitude: \"+0335700\"\n },\n \"Asia/Gaza\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700328T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701031T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SA\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0313000\",\n longitude: \"+0342800\"\n },\n \"Asia/Harbin\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Hebron\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700328T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701031T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SA\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0313200\",\n longitude: \"+0350542\"\n },\n \"Asia/Ho_Chi_Minh\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0104500\",\n longitude: \"+1064000\"\n },\n \"Asia/Hong_Kong\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:HKT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0221700\",\n longitude: \"+1140900\"\n },\n \"Asia/Hovd\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0480100\",\n longitude: \"+0913900\"\n },\n \"Asia/Irkutsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0521600\",\n longitude: \"+1042000\"\n },\n \"Asia/Istanbul\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Jakarta\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:WIB\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0061000\",\n longitude: \"+1064800\"\n },\n \"Asia/Jayapura\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:WIT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0023200\",\n longitude: \"+1404200\"\n },\n \"Asia/Jerusalem\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:IDT\\r\\nDTSTART:19700327T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:IST\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0314650\",\n longitude: \"+0351326\"\n },\n \"Asia/Kabul\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0430\\r\\nTZOFFSETTO:+0430\\r\\nTZNAME:+0430\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0343100\",\n longitude: \"+0691200\"\n },\n \"Asia/Kamchatka\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0530100\",\n longitude: \"+1583900\"\n },\n \"Asia/Karachi\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:PKT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0245200\",\n longitude: \"+0670300\"\n },\n \"Asia/Kashgar\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Kathmandu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0545\\r\\nTZOFFSETTO:+0545\\r\\nTZNAME:+0545\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0274300\",\n longitude: \"+0851900\"\n },\n \"Asia/Katmandu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0545\\r\\nTZOFFSETTO:+0545\\r\\nTZNAME:+0545\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Khandyga\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0623923\",\n longitude: \"+1353314\"\n },\n \"Asia/Kolkata\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0530\\r\\nTZOFFSETTO:+0530\\r\\nTZNAME:IST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0223200\",\n longitude: \"+0882200\"\n },\n \"Asia/Krasnoyarsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0560100\",\n longitude: \"+0925000\"\n },\n \"Asia/Kuala_Lumpur\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Kuching\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0013300\",\n longitude: \"+1102000\"\n },\n \"Asia/Kuwait\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Macao\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Macau\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0221150\",\n longitude: \"+1133230\"\n },\n \"Asia/Magadan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0593400\",\n longitude: \"+1504800\"\n },\n \"Asia/Makassar\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:WITA\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0050700\",\n longitude: \"+1192400\"\n },\n \"Asia/Manila\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:PST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0143500\",\n longitude: \"+1210000\"\n },\n \"Asia/Muscat\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Nicosia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0351000\",\n longitude: \"+0332200\"\n },\n \"Asia/Novokuznetsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0534500\",\n longitude: \"+0870700\"\n },\n \"Asia/Novosibirsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0550200\",\n longitude: \"+0825500\"\n },\n \"Asia/Omsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0550000\",\n longitude: \"+0732400\"\n },\n \"Asia/Oral\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0511300\",\n longitude: \"+0512100\"\n },\n \"Asia/Phnom_Penh\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Pontianak\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:WIB\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0000200\",\n longitude: \"+1092000\"\n },\n \"Asia/Pyongyang\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:KST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0390100\",\n longitude: \"+1254500\"\n },\n \"Asia/Qatar\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0251700\",\n longitude: \"+0513200\"\n },\n \"Asia/Qostanay\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0531200\",\n longitude: \"+0633700\"\n },\n \"Asia/Qyzylorda\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0444800\",\n longitude: \"+0652800\"\n },\n \"Asia/Rangoon\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0630\\r\\nTZOFFSETTO:+0630\\r\\nTZNAME:+0630\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Riyadh\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0243800\",\n longitude: \"+0464300\"\n },\n \"Asia/Saigon\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Sakhalin\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0465800\",\n longitude: \"+1424200\"\n },\n \"Asia/Samarkand\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0394000\",\n longitude: \"+0664800\"\n },\n \"Asia/Seoul\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:KST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0373300\",\n longitude: \"+1265800\"\n },\n \"Asia/Shanghai\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0311400\",\n longitude: \"+1212800\"\n },\n \"Asia/Singapore\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0011700\",\n longitude: \"+1035100\"\n },\n \"Asia/Srednekolymsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0672800\",\n longitude: \"+1534300\"\n },\n \"Asia/Taipei\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0250300\",\n longitude: \"+1213000\"\n },\n \"Asia/Tashkent\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0412000\",\n longitude: \"+0691800\"\n },\n \"Asia/Tbilisi\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0414300\",\n longitude: \"+0444900\"\n },\n \"Asia/Tehran\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0330\\r\\nTZOFFSETTO:+0330\\r\\nTZNAME:+0330\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0354000\",\n longitude: \"+0512600\"\n },\n \"Asia/Tel_Aviv\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:IDT\\r\\nDTSTART:19700327T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:IST\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Thimbu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Thimphu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0272800\",\n longitude: \"+0893900\"\n },\n \"Asia/Tokyo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:JST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0353916\",\n longitude: \"+1394441\"\n },\n \"Asia/Tomsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0563000\",\n longitude: \"+0845800\"\n },\n \"Asia/Ujung_Pandang\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:WITA\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Ulaanbaatar\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0475500\",\n longitude: \"+1065300\"\n },\n \"Asia/Ulan_Bator\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Urumqi\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0434800\",\n longitude: \"+0873500\"\n },\n \"Asia/Ust-Nera\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0643337\",\n longitude: \"+1431336\"\n },\n \"Asia/Vientiane\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Asia/Vladivostok\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0431000\",\n longitude: \"+1315600\"\n },\n \"Asia/Yakutsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0620000\",\n longitude: \"+1294000\"\n },\n \"Asia/Yangon\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0630\\r\\nTZOFFSETTO:+0630\\r\\nTZNAME:+0630\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0164700\",\n longitude: \"+0961000\"\n },\n \"Asia/Yekaterinburg\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0565100\",\n longitude: \"+0603600\"\n },\n \"Asia/Yerevan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0401100\",\n longitude: \"+0443000\"\n },\n \"Atlantic/Azores\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:+00\\r\\nDTSTART:19700329T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:-0100\\r\\nTZNAME:-01\\r\\nDTSTART:19701025T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0374400\",\n longitude: \"-0254000\"\n },\n \"Atlantic/Bermuda\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0321700\",\n longitude: \"-0644600\"\n },\n \"Atlantic/Canary\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WEST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:WET\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0280600\",\n longitude: \"-0152400\"\n },\n \"Atlantic/Cape_Verde\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0100\\r\\nTZOFFSETTO:-0100\\r\\nTZNAME:-01\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0145500\",\n longitude: \"-0233100\"\n },\n \"Atlantic/Faeroe\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WEST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:WET\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Atlantic/Faroe\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WEST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:WET\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0620100\",\n longitude: \"-0064600\"\n },\n \"Atlantic/Jan_Mayen\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Atlantic/Madeira\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WEST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:WET\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0323800\",\n longitude: \"-0165400\"\n },\n \"Atlantic/Reykjavik\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Atlantic/South_Georgia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0541600\",\n longitude: \"-0363200\"\n },\n \"Atlantic/St_Helena\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Atlantic/Stanley\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0514200\",\n longitude: \"-0575100\"\n },\n \"Australia/ACT\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Australia/Adelaide\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:ACDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0345500\",\n longitude: \"+1383500\"\n },\n \"Australia/Brisbane\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0272800\",\n longitude: \"+1530200\"\n },\n \"Australia/Broken_Hill\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:ACDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0315700\",\n longitude: \"+1412700\"\n },\n \"Australia/Canberra\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Australia/Currie\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Australia/Darwin\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0122800\",\n longitude: \"+1305000\"\n },\n \"Australia/Eucla\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0845\\r\\nTZOFFSETTO:+0845\\r\\nTZNAME:+0845\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0314300\",\n longitude: \"+1285200\"\n },\n \"Australia/Hobart\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0425300\",\n longitude: \"+1471900\"\n },\n \"Australia/LHI\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:+1030\\r\\nDTSTART:19700405T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Australia/Lindeman\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0201600\",\n longitude: \"+1490000\"\n },\n \"Australia/Lord_Howe\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:+1030\\r\\nDTSTART:19700405T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0313300\",\n longitude: \"+1590500\"\n },\n \"Australia/Melbourne\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0374900\",\n longitude: \"+1445800\"\n },\n \"Australia/NSW\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Australia/North\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Australia/Perth\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:AWST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0315700\",\n longitude: \"+1155100\"\n },\n \"Australia/Queensland\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Australia/South\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:ACDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Australia/Sydney\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0335200\",\n longitude: \"+1511300\"\n },\n \"Australia/Tasmania\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Australia/Victoria\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Australia/West\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:AWST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Australia/Yancowinna\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:ACDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Brazil/Acre\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Brazil/DeNoronha\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Brazil/East\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Brazil/West\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Canada/Atlantic\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Canada/Central\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Canada/Eastern\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Canada/Mountain\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Canada/Newfoundland\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0230\\r\\nTZOFFSETTO:-0330\\r\\nTZNAME:NST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0330\\r\\nTZOFFSETTO:-0230\\r\\nTZNAME:NDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Canada/Pacific\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Canada/Saskatchewan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Canada/Yukon\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Chile/Continental\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700405T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700906T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Chile/EasterIsland\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:-06\\r\\nDTSTART:19700404T220000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SA\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700905T220000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SA\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Europe/Amsterdam\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Andorra\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0423000\",\n longitude: \"+0013100\"\n },\n \"Europe/Astrakhan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0462100\",\n longitude: \"+0480300\"\n },\n \"Europe/Athens\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0375800\",\n longitude: \"+0234300\"\n },\n \"Europe/Belfast\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:BST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Belgrade\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0445000\",\n longitude: \"+0203000\"\n },\n \"Europe/Berlin\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0523000\",\n longitude: \"+0132200\"\n },\n \"Europe/Bratislava\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Brussels\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0505000\",\n longitude: \"+0042000\"\n },\n \"Europe/Bucharest\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0442600\",\n longitude: \"+0260600\"\n },\n \"Europe/Budapest\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0473000\",\n longitude: \"+0190500\"\n },\n \"Europe/Busingen\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Chisinau\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0470000\",\n longitude: \"+0285000\"\n },\n \"Europe/Copenhagen\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Dublin\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:IST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0532000\",\n longitude: \"-0061500\"\n },\n \"Europe/Gibraltar\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0360800\",\n longitude: \"-0052100\"\n },\n \"Europe/Guernsey\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:BST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Helsinki\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0601000\",\n longitude: \"+0245800\"\n },\n \"Europe/Isle_of_Man\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:BST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Istanbul\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0410100\",\n longitude: \"+0285800\"\n },\n \"Europe/Jersey\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:BST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Kaliningrad\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0544300\",\n longitude: \"+0203000\"\n },\n \"Europe/Kiev\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Europe/Kirov\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:MSK\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0583600\",\n longitude: \"+0493900\"\n },\n \"Europe/Kyiv\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0502600\",\n longitude: \"+0303100\"\n },\n \"Europe/Lisbon\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:WET\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WEST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"+0384300\",\n longitude: \"-0090800\"\n },\n \"Europe/Ljubljana\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/London\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:BST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0513030\",\n longitude: \"+0000731\"\n },\n \"Europe/Luxembourg\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Madrid\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0402400\",\n longitude: \"-0034100\"\n },\n \"Europe/Malta\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0355400\",\n longitude: \"+0143100\"\n },\n \"Europe/Mariehamn\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Minsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0535400\",\n longitude: \"+0273400\"\n },\n \"Europe/Monaco\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Moscow\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:MSK\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0554521\",\n longitude: \"+0373704\"\n },\n \"Europe/Nicosia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Europe/Oslo\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Paris\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0485200\",\n longitude: \"+0022000\"\n },\n \"Europe/Podgorica\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Prague\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0500500\",\n longitude: \"+0142600\"\n },\n \"Europe/Riga\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0565700\",\n longitude: \"+0240600\"\n },\n \"Europe/Rome\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0415400\",\n longitude: \"+0122900\"\n },\n \"Europe/Samara\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0531200\",\n longitude: \"+0500900\"\n },\n \"Europe/San_Marino\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Sarajevo\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Saratov\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0513400\",\n longitude: \"+0460200\"\n },\n \"Europe/Simferopol\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:MSK\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0445700\",\n longitude: \"+0340600\"\n },\n \"Europe/Skopje\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Sofia\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0424100\",\n longitude: \"+0231900\"\n },\n \"Europe/Stockholm\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Tallinn\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0592500\",\n longitude: \"+0244500\"\n },\n \"Europe/Tirane\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0412000\",\n longitude: \"+0195000\"\n },\n \"Europe/Tiraspol\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Ulyanovsk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0542000\",\n longitude: \"+0482400\"\n },\n \"Europe/Uzhgorod\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Europe/Vaduz\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Vatican\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Vienna\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0481300\",\n longitude: \"+0162000\"\n },\n \"Europe/Vilnius\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0544100\",\n longitude: \"+0251900\"\n },\n \"Europe/Volgograd\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:MSK\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0484400\",\n longitude: \"+0442500\"\n },\n \"Europe/Warsaw\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0521500\",\n longitude: \"+0210000\"\n },\n \"Europe/Zagreb\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Europe/Zaporozhye\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\"\n ]\n },\n \"Europe/Zurich\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0472300\",\n longitude: \"+0083200\"\n },\n \"Indian/Antananarivo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Indian/Chagos\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0072000\",\n longitude: \"+0722500\"\n },\n \"Indian/Christmas\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Indian/Cocos\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0630\\r\\nTZOFFSETTO:+0630\\r\\nTZNAME:+0630\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Indian/Comoro\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Indian/Kerguelen\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Indian/Mahe\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Indian/Maldives\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0041000\",\n longitude: \"+0733000\"\n },\n \"Indian/Mauritius\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0201000\",\n longitude: \"+0573000\"\n },\n \"Indian/Mayotte\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Indian/Reunion\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Mexico/BajaNorte\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"Mexico/BajaSur\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Mexico/General\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Apia\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0135000\",\n longitude: \"-1714400\"\n },\n \"Pacific/Auckland\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:NZDT\\r\\nDTSTART:19700927T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:NZST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0365200\",\n longitude: \"+1744600\"\n },\n \"Pacific/Bougainville\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0061300\",\n longitude: \"+1553400\"\n },\n \"Pacific/Chatham\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1245\\r\\nTZOFFSETTO:+1345\\r\\nTZNAME:+1345\\r\\nDTSTART:19700927T024500\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1345\\r\\nTZOFFSETTO:+1245\\r\\nTZNAME:+1245\\r\\nDTSTART:19700405T034500\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0435700\",\n longitude: \"-1763300\"\n },\n \"Pacific/Chuuk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Easter\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:-06\\r\\nDTSTART:19700404T220000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SA\\r\\nEND:STANDARD\",\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700905T220000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SA\\r\\nEND:DAYLIGHT\"\n ],\n latitude: \"-0270900\",\n longitude: \"-1092600\"\n },\n \"Pacific/Efate\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0174000\",\n longitude: \"+1682500\"\n },\n \"Pacific/Enderbury\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Fakaofo\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0092200\",\n longitude: \"-1711400\"\n },\n \"Pacific/Fiji\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0180800\",\n longitude: \"+1782500\"\n },\n \"Pacific/Funafuti\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Galapagos\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:-06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0005400\",\n longitude: \"-0893600\"\n },\n \"Pacific/Gambier\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:-09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0230800\",\n longitude: \"-1345700\"\n },\n \"Pacific/Guadalcanal\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0093200\",\n longitude: \"+1601200\"\n },\n \"Pacific/Guam\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:ChST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0132800\",\n longitude: \"+1444500\"\n },\n \"Pacific/Honolulu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:HST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0211825\",\n longitude: \"-1575130\"\n },\n \"Pacific/Johnston\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:HST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Kanton\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0024700\",\n longitude: \"-1714300\"\n },\n \"Pacific/Kiritimati\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1400\\r\\nTZOFFSETTO:+1400\\r\\nTZNAME:+14\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0015200\",\n longitude: \"-1572000\"\n },\n \"Pacific/Kosrae\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0051900\",\n longitude: \"+1625900\"\n },\n \"Pacific/Kwajalein\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0090500\",\n longitude: \"+1672000\"\n },\n \"Pacific/Majuro\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Marquesas\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0930\\r\\nTZOFFSETTO:-0930\\r\\nTZNAME:-0930\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0090000\",\n longitude: \"-1393000\"\n },\n \"Pacific/Midway\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1100\\r\\nTZOFFSETTO:-1100\\r\\nTZNAME:SST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Nauru\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0003100\",\n longitude: \"+1665500\"\n },\n \"Pacific/Niue\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1100\\r\\nTZOFFSETTO:-1100\\r\\nTZNAME:-11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0190100\",\n longitude: \"-1695500\"\n },\n \"Pacific/Norfolk\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0290300\",\n longitude: \"+1675800\"\n },\n \"Pacific/Noumea\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0221600\",\n longitude: \"+1662700\"\n },\n \"Pacific/Pago_Pago\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1100\\r\\nTZOFFSETTO:-1100\\r\\nTZNAME:SST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0141600\",\n longitude: \"-1704200\"\n },\n \"Pacific/Palau\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0072000\",\n longitude: \"+1342900\"\n },\n \"Pacific/Pitcairn\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:-08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0250400\",\n longitude: \"-1300500\"\n },\n \"Pacific/Pohnpei\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Ponape\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Port_Moresby\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0093000\",\n longitude: \"+1471000\"\n },\n \"Pacific/Rarotonga\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:-10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0211400\",\n longitude: \"-1594600\"\n },\n \"Pacific/Saipan\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:ChST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Samoa\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1100\\r\\nTZOFFSETTO:-1100\\r\\nTZNAME:SST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Tahiti\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:-10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0173200\",\n longitude: \"-1493400\"\n },\n \"Pacific/Tarawa\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"+0012500\",\n longitude: \"+1730000\"\n },\n \"Pacific/Tongatapu\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ],\n latitude: \"-0210800\",\n longitude: \"-1751200\"\n },\n \"Pacific/Truk\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Wake\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Wallis\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"Pacific/Yap\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Alaska\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Aleutian\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:HDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:HST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Arizona\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Central\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/East-Indiana\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Eastern\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Hawaii\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:HST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Indiana-Starke\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Michigan\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Mountain\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Pacific\": {\n ics: [\n \"BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT\",\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD\"\n ]\n },\n \"US/Samoa\": {\n ics: [\n \"BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1100\\r\\nTZOFFSETTO:-1100\\r\\nTZNAME:SST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD\"\n ]\n }\n};\nconst tzData = {\n version,\n aliases,\n zones\n};\nclass TimezoneManager {\n /**\n * Map of aliases\n * Alias name => timezoneId\n */\n _aliases = /* @__PURE__ */ new Map();\n /**\n * Map of Timezones\n * timezoneId => Timezone\n */\n _timezones = /* @__PURE__ */ new Map();\n /**\n * List of aliases that were registered while their targets were missing\n * [[aliasName, timezoneId], ...]\n */\n _pendingAliases = [];\n /**\n * Gets a timezone for the given id.\n *\n * @param timezoneId - The id of the timezone\n */\n getTimezoneForId(timezoneId) {\n let level = 0;\n while (level++ < 20) {\n if (this._timezones.has(timezoneId)) {\n return this._timezones.get(timezoneId);\n }\n if (this._aliases.has(timezoneId)) {\n timezoneId = this._aliases.get(timezoneId);\n } else {\n return null;\n }\n }\n console.error(\"TimezoneManager.getTimezoneForIdRec() exceeds recursion limits\");\n return null;\n }\n /**\n * Checks if there is a timezone for the given id stored in this manager.\n *\n * @param timezoneId - The id of the timezone\n */\n hasTimezoneForId(timezoneId) {\n return this._timezones.has(timezoneId) || this._aliases.has(timezoneId);\n }\n /**\n * Checks if the given timezone id is an alias.\n *\n * @param timezoneId - The id of the timezone\n */\n isAlias(timezoneId) {\n return !this._timezones.has(timezoneId) && this._aliases.has(timezoneId);\n }\n /**\n * Lists all timezones.\n *\n * @param includeAliases - Whether or not to include aliases\n */\n listAllTimezones(includeAliases = false) {\n const timezones = Array.from(this._timezones.keys());\n if (includeAliases) {\n return timezones.concat(Array.from(this._aliases.keys()));\n }\n return timezones;\n }\n /**\n * Registers a timezone\n *\n * @param timezone - The timezone-object to register\n */\n registerTimezone(timezone) {\n this._timezones.set(timezone.timezoneId, timezone);\n ICAL.TimezoneService.register(timezone.toICALTimezone(), timezone.timezoneId);\n this._pendingAliases = this._pendingAliases.filter(([aliasName, timezoneId]) => {\n if (timezoneId !== timezone.timezoneId) {\n return true;\n }\n ICAL.TimezoneService.register(timezone.toICALTimezone(), aliasName);\n return false;\n });\n }\n registerDefaultTimezones() {\n console.debug(`@nextcloud/calendar-js app is using version ${tzData.version} of the timezone database`);\n for (const tzid in tzData.zones) {\n const ics = [\n \"BEGIN:VTIMEZONE\",\n \"TZID:\" + tzid,\n ...tzData.zones[tzid].ics,\n \"END:VTIMEZONE\"\n ].join(\"\\r\\n\");\n this.registerTimezoneFromICS(tzid, ics);\n }\n for (const tzid in tzData.aliases) {\n this.registerAlias(tzid, tzData.aliases[tzid].aliasTo);\n }\n }\n /**\n * Registers a timezone based on ics data.\n *\n * @param timezoneId - The id of the timezone\n * @param ics - The iCalendar timezone definition\n */\n registerTimezoneFromICS(timezoneId, ics) {\n const timezone = new Timezone(timezoneId, ics);\n this.registerTimezone(timezone);\n }\n /**\n * Registers a new timezone-alias\n *\n * @param aliasName - The timezone-id of the alias\n * @param timezoneId - The timezone-id to resolve the alias to\n */\n registerAlias(aliasName, timezoneId) {\n this._aliases.set(aliasName, timezoneId);\n const resolvedTimezone = this.getTimezoneForId(timezoneId);\n if (!resolvedTimezone) {\n this._pendingAliases.push([aliasName, timezoneId]);\n return;\n }\n ICAL.TimezoneService.register(resolvedTimezone.toICALTimezone(), aliasName);\n }\n /**\n * Unregisters a timezone.\n *\n * @param timezoneId - Unregisters a timezone by Id\n */\n unregisterTimezones(timezoneId) {\n this._timezones.delete(timezoneId);\n ICAL.TimezoneService.remove(timezoneId);\n }\n /**\n * Unregisters a timezone-alias.\n *\n * @param aliasName - The alias to unregister\n */\n unregisterAlias(aliasName) {\n this._aliases.delete(aliasName);\n this._pendingAliases = this._pendingAliases.filter(([pendingAliasName]) => pendingAliasName !== aliasName);\n ICAL.TimezoneService.remove(aliasName);\n }\n /**\n * Clear all timezones\n */\n clearAllTimezones() {\n this._aliases = /* @__PURE__ */ new Map();\n this._pendingAliases = [];\n this._timezones = /* @__PURE__ */ new Map();\n ICAL.TimezoneService.reset();\n timezoneManager.registerTimezone(Timezone.utc);\n timezoneManager.registerTimezone(Timezone.floating);\n timezoneManager.registerAlias(\"GMT\", Timezone.utc.timezoneId);\n timezoneManager.registerAlias(\"Z\", Timezone.utc.timezoneId);\n }\n}\nconst timezoneManager = new TimezoneManager();\ntimezoneManager.clearAllTimezones();\nfunction getTimezoneManager() {\n return timezoneManager;\n}\nexport {\n Timezone,\n getReadableTimezoneName,\n getSortedTimezoneList,\n getTimezoneManager,\n isOlsonTimezone\n};\n","import { u as useModelMigration } from \"./useModelMigration-DBUi8saj.mjs\";\nimport { r as register, z as t43, A as t25, a as t } from \"./_l10n-DSLCwJSN.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { N as NcSelect } from \"./NcSelect-TjZw7TJ_.mjs\";\nimport { getTimezoneManager as getTimezoneManager$1 } from \"@nextcloud/timezones\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t43);\nregister(t25);\nfunction getSortedTimezoneList(timezoneList = [], additionalTimezones = []) {\n const sortedByContinent = {};\n const sortedList = [];\n for (const timezoneId of timezoneList) {\n const components = timezoneId.split(\"/\");\n let [continent, name] = [components.shift(), components.join(\"/\")];\n if (!name) {\n name = continent;\n continent = t(\"Global\");\n }\n sortedByContinent[continent] = sortedByContinent[continent] || {\n continent,\n regions: []\n };\n sortedByContinent[continent].regions.push({\n label: getReadableTimezoneName(name),\n cities: [],\n timezoneId\n });\n }\n for (const additionalTimezone of additionalTimezones) {\n const { continent, label, timezoneId } = additionalTimezone;\n sortedByContinent[continent] = sortedByContinent[continent] || {\n continent,\n regions: []\n };\n sortedByContinent[continent].regions.push({\n label,\n cities: [],\n timezoneId\n });\n }\n for (const continent in sortedByContinent) {\n if (!Object.hasOwn(sortedByContinent, continent)) {\n continue;\n }\n sortedByContinent[continent].regions.sort((a, b) => {\n if (a.label < b.label) {\n return -1;\n }\n return 1;\n });\n sortedList.push(sortedByContinent[continent]);\n }\n sortedList.sort((a, b) => {\n if (a.continent < b.continent) {\n return -1;\n }\n return 1;\n });\n return sortedList;\n}\nfunction getReadableTimezoneName(timezoneId) {\n return timezoneId.split(\"_\").join(\" \").replace(\"St \", \"St. \").split(\"/\").join(\" - \");\n}\nconst timezoneManager = getTimezoneManager$1();\nlet initialized = false;\nfunction getTimezoneManager() {\n if (!initialized) {\n timezoneManager.registerDefaultTimezones();\n initialized = true;\n }\n return timezoneManager;\n}\nconst _sfc_main = {\n name: \"NcTimezonePicker\",\n components: {\n NcSelect\n },\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * An array of additional timezones to include with the standard database. Useful if there is a custom timezone, e.g. read from user data\n */\n additionalTimezones: {\n type: Array,\n default: () => []\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: String,\n default: void 0\n },\n /**\n * The selected timezone. Use v-model for two-way binding. The default timezone is floating, which means a time independent of timezone. See https://icalendar.org/CalDAV-Access-RFC-4791/7-3-date-and-floating-time.html for details.\n */\n modelValue: {\n type: String,\n default: \"floating\"\n },\n /**\n * ID of the inner vue-select element, can be used for labels like: `vs-${uid}__combobox`\n */\n uid: {\n type: [String, Number],\n default: () => \"tz-\".concat(GenRandomId(5))\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"input\",\n /**\n * Two-way binding of the value prop. Use v-model=\"selectedTimezone\" for two-way binding\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"input\");\n return {\n model\n };\n },\n computed: {\n placeholder() {\n return t(\"Type to search time zone\");\n },\n selectedTimezone() {\n for (const additionalTimezone of this.additionalTimezones) {\n if (additionalTimezone.timezoneId === this.model) {\n return additionalTimezone;\n }\n }\n return {\n label: getReadableTimezoneName(this.model),\n timezoneId: this.model\n };\n },\n options() {\n const timezoneManager2 = getTimezoneManager();\n const timezoneList = getSortedTimezoneList(timezoneManager2.listAllTimezones(), this.additionalTimezones);\n let timezonesGrouped = [];\n Object.values(timezoneList).forEach((group) => {\n timezonesGrouped = timezonesGrouped.concat(group.regions);\n });\n return timezonesGrouped;\n }\n },\n methods: {\n t,\n change(newValue) {\n if (!newValue) {\n return;\n }\n this.model = newValue.timezoneId;\n },\n /**\n * Returns whether this is a continent label,\n * or an actual timezone. Continent labels are not selectable.\n *\n * @param {string} option The option\n * @return {boolean}\n */\n isSelectable(option) {\n return !option.timezoneId.startsWith(\"tz-group__\");\n },\n /**\n * Function to filter the timezone list.\n * We search in the timezoneId, so both continent and region names can be matched.\n *\n * @param {object} option The timezone option\n * @param {string} label The label of the timezone\n * @param {string} search The search string\n * @return {boolean}\n */\n filterBy(option, label, search) {\n const terms = search.trim().split(\" \");\n if (option.timezoneId.startsWith(\"tz-group__\")) {\n return option.regions.some((region) => {\n return this.matchTimezoneId(region.timezoneId, terms);\n });\n }\n return this.matchTimezoneId(option.timezoneId, terms);\n },\n matchTimezoneId(timezoneId, terms) {\n return terms.every((term) => timezoneId.toLowerCase().includes(term.toLowerCase()));\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcSelect\", { attrs: { \"aria-label-combobox\": _vm.t(\"Search for time zone\"), \"clearable\": false, \"filter-by\": _vm.filterBy, \"multiple\": false, \"options\": _vm.options, \"placeholder\": _vm.placeholder, \"selectable\": _vm.isSelectable, \"uid\": _vm.uid, \"value\": _vm.selectedTimezone, \"label\": \"label\" }, on: { \"option:selected\": _vm.change } });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcTimezonePicker = __component__.exports;\nexport {\n NcTimezonePicker as N\n};\n//# sourceMappingURL=NcTimezonePicker-D4y736xC.mjs.map\n","import '../assets/NcDateTimePicker-C6sMtYzL.css';\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nimport { getFirstDay, getDayNamesMin, getDayNamesShort, getDayNames, getMonthNamesShort, getMonthNames } from \"@nextcloud/l10n\";\nimport DatePicker from \"vue2-datepicker\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { u as useModelMigration } from \"../chunks/useModelMigration-DBUi8saj.mjs\";\nimport { r as register, I as t38, a as t } from \"../chunks/_l10n-DSLCwJSN.mjs\";\nimport { G as GenRandomId } from \"../chunks/GenRandomId-F5ebeBB_.mjs\";\nimport { l as logger } from \"../chunks/logger-D3RVzcfQ.mjs\";\nimport { N as NcPopover } from \"../chunks/NcPopover-nzbq2IjT.mjs\";\nimport { N as NcTimezonePicker } from \"../chunks/NcTimezonePicker-D4y736xC.mjs\";\nimport { S as ScopeComponent } from \"../chunks/ScopeComponent-DsONbC6w.mjs\";\nconst _sfc_main$2 = {\n name: \"CalendarBlankIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon calendar-blank-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst CalendarBlank = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"WebIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon web-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst Web = __component__$1.exports;\nregister(t38);\nconst formatMap = {\n date: \"YYYY-MM-DD\",\n datetime: \"YYYY-MM-DD H:mm:ss\",\n year: \"YYYY\",\n month: \"YYYY-MM\",\n time: \"H:mm:ss\",\n week: \"w\"\n};\nconst _sfc_main = {\n name: \"NcDateTimePicker\",\n components: {\n CalendarBlank,\n DatePicker,\n NcPopover,\n NcTimezonePicker,\n Web\n },\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Allow to clear the input.\n */\n clearable: {\n type: Boolean,\n default: false\n },\n /**\n * Default increment step for minutes in the time picker.\n */\n minuteStep: {\n type: Number,\n default: 10\n },\n /**\n * Since 8.25.0: Support 'date-range', 'time-range' and 'datetime-range' values.\n */\n type: {\n type: String,\n default: \"date\",\n validator: (type) => [\"date\", \"time\", \"datetime\", \"week\", \"month\", \"year\", \"date-range\", \"time-range\", \"datetime-range\"].includes(type)\n },\n /**\n * Either `moment.js` formatting tokens or a function taking a Date object and returning a string.\n * Warning: In v9 this will change the accepted token format to standardized Unicode tokens instead!\n */\n format: {\n type: [String, Function],\n default: null\n },\n /**\n * @deprecated use `format` instead\n */\n formatter: {\n type: Object,\n default: null\n },\n /**\n * The locale to use for formatting the shown dates.\n * By default the users current Nextcloud locale is used.\n */\n lang: {\n type: Object,\n default: null\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n // eslint-disable-next-line\n value: {\n default: void 0\n },\n /**\n * The value to initialize, but also two-way bind the selected date. The date is – like the `Date` object in\n * JavaScript – tied to UTC. The selected time zone does not have an influence of the selected time and date\n * value. You have to translate the time yourself when you want to factor in time zones.\n */\n // eslint-disable-next-line\n modelValue: {\n default: () => /* @__PURE__ */ new Date()\n },\n /**\n * The preselected IANA time zone ID for the time zone picker, only relevant in combination with `:show-timezone-select=\"true\"`. Example: `Europe/Berlin`. The prop supports two-way binding through the .sync modifier.\n */\n timezoneId: {\n type: String,\n default: \"UTC\"\n },\n /**\n * Include a timezone picker within the menu.\n * Please note that the dates are still bound to the locale timezone\n * and any conversion needs to be done by the app itself.\n */\n showTimezoneSelect: {\n type: Boolean,\n default: false\n },\n /**\n * If set to true the timezone select icon will be highlighted.\n */\n highlightTimezone: {\n type: Boolean,\n default: false\n },\n /**\n * If set to true the menu will be placed on the ``\n * instead of default placement on the picker.\n */\n appendToBody: {\n type: Boolean,\n default: false\n },\n /**\n * Show the ISO week numbers within the calendar.\n */\n showWeekNumber: {\n type: Boolean,\n default: false\n },\n /**\n * Optional custom placeholder for the input box.\n */\n placeholder: {\n type: String,\n default: null\n },\n /**\n * @deprecated use the 'date-range' or 'datetime-range' type instead.\n */\n range: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"update:timezone-id\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model,\n timezoneDialogHeaderId: \"timezone-dialog-header-\".concat(GenRandomId())\n };\n },\n data() {\n return {\n showTimezonePopover: false,\n tzVal: this.timezoneId\n };\n },\n computed: {\n realType() {\n return this.type.split(\"-\")[0];\n },\n /**\n * Datepicker language\n * https://github.com/mengxiong10/vue2-datepicker/blob/master/locale.md\n *\n * @return {object}\n */\n defaultLang() {\n return {\n formatLocale: {\n months: getMonthNames(),\n monthsShort: getMonthNamesShort(),\n weekdays: getDayNames(),\n weekdaysShort: getDayNamesShort(),\n weekdaysMin: getDayNamesMin(),\n // 0 = sunday, 1 = monday\n firstDayOfWeek: getFirstDay()\n },\n monthFormat: \"MMMM\"\n };\n },\n /**\n * Translated placeholder\n *\n * @return {string}\n */\n defaultPlaceholder() {\n if (this.realType === \"time\") {\n return t(\"Pick a time\");\n }\n if (this.realType === \"month\") {\n return t(\"Pick a month\");\n }\n if (this.realType === \"year\") {\n return t(\"Pick a year\");\n }\n if (this.realType === \"week\") {\n return t(\"Pick a week\");\n }\n if (this.realType === \"date\") {\n return t(\"Pick a date\");\n }\n return t(\"Pick a date and a time\");\n },\n /**\n * Is the range picker enabled\n */\n internalRange() {\n return this.range || this.type.endsWith(\"-range\");\n },\n internalFormat() {\n if (this.format && typeof this.format === \"string\") {\n return this.format;\n }\n return formatMap[this.realType] || formatMap.date;\n },\n /**\n * The formatter used for the vue-datepicker to fix nextcloud-libraries/nextcloud-vue#5044\n */\n internalFormatter() {\n var _a;\n const getWeek = (date) => {\n const firstThursday = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n firstThursday.setUTCDate(firstThursday.getUTCDate() + 4 - (firstThursday.getUTCDay() || 7));\n const yearStart = new Date(Date.UTC(firstThursday.getUTCFullYear(), 0, 1));\n return Math.ceil(((firstThursday - yearStart) / 864e5 + 1) / 7);\n };\n return __spreadValues(__spreadValues({\n getWeek\n }, typeof this.format === \"function\" ? { stringify: this.format } : {}), (_a = this.formatter) != null ? _a : {});\n }\n },\n methods: {\n t,\n handleSelectYear(year) {\n const value = this.$refs.datepicker.currentValue;\n if (value) {\n try {\n const date = new Date(new Date(value).setFullYear(year));\n this.$refs.datepicker.selectDate(date);\n } catch (e) {\n logger.error(\"Invalid value\", { value, year });\n }\n }\n },\n handleSelectMonth(month) {\n const value = this.$refs.datepicker.currentValue;\n if (value) {\n try {\n const date = new Date(new Date(value).setMonth(month));\n this.$refs.datepicker.selectDate(date);\n } catch (e) {\n logger.error(\"Invalid value\", { value, month });\n }\n }\n },\n /**\n * Toggles the visibility of the time zone popover\n */\n toggleTimezonePopover() {\n if (!this.showTimezoneSelect) {\n return;\n }\n this.showTimezonePopover = !this.showTimezonePopover;\n }\n }\n};\nvar _sfc_render = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"DatePicker\", _vm._g(_vm._b({ ref: \"datepicker\", attrs: { \"append-to-body\": _vm.appendToBody, \"clearable\": _vm.clearable, \"format\": _vm.internalFormat, \"formatter\": _vm.internalFormatter, \"lang\": _vm.lang ? _vm.lang : _vm.defaultLang, \"minute-step\": _vm.minuteStep, \"placeholder\": _vm.placeholder ? _vm.placeholder : _vm.defaultPlaceholder, \"popup-class\": { \"show-week-number\": _vm.showWeekNumber }, \"range\": _vm.internalRange, \"show-week-number\": _vm.showWeekNumber, \"type\": _vm.realType, \"value\": _vm.model }, on: { \"select-year\": _vm.handleSelectYear, \"select-month\": _vm.handleSelectMonth, \"input\": function($event) {\n _vm.model = $event;\n } }, scopedSlots: _vm._u([{ key: \"icon-calendar\", fn: function() {\n return [_vm.showTimezoneSelect ? _c(\"NcPopover\", { attrs: { \"popup-role\": \"dialog\", \"shown\": _vm.showTimezonePopover, \"popover-base-class\": \"timezone-select__popper\" }, on: { \"update:shown\": function($event) {\n _vm.showTimezonePopover = $event;\n } }, scopedSlots: _vm._u([{ key: \"trigger\", fn: function({ attrs }) {\n return [_c(\"button\", _vm._b({ staticClass: \"datetime-picker-inline-icon\", class: { \"datetime-picker-inline-icon--highlighted\": _vm.highlightTimezone }, on: { \"mousedown\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return (() => {\n }).apply(null, arguments);\n } } }, \"button\", attrs, false), [_c(\"Web\", { attrs: { \"size\": 20 } })], 1)];\n } }], null, false, 3026992387) }, [_c(\"div\", { attrs: { \"role\": \"dialog\", \"aria-labelledby\": _vm.timezoneDialogHeaderId } }, [_c(\"div\", { staticClass: \"timezone-popover-wrapper__label\" }, [_c(\"strong\", { attrs: { \"id\": _vm.timezoneDialogHeaderId } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Please select a time zone:\")) + \" \")])]), _c(\"NcTimezonePicker\", { staticClass: \"timezone-popover-wrapper__timezone-select\", on: { \"input\": function($event) {\n return _vm.$emit(\"update:timezone-id\", arguments[0]);\n } }, model: { value: _vm.tzVal, callback: function($$v) {\n _vm.tzVal = $$v;\n }, expression: \"tzVal\" } })], 1)]) : _c(\"CalendarBlank\", { attrs: { \"size\": 20 } })];\n }, proxy: true }, _vm._l(_vm.$scopedSlots, function(_, slot) {\n return { key: slot, fn: function(scope) {\n return [_vm._t(slot, null, null, scope)];\n } };\n })], null, true) }, \"DatePicker\", _vm.$attrs, false), _vm.$listeners));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"3e415d44\"\n);\nconst NcDateTimePicker = __component__.exports;\nScopeComponent(NcDateTimePicker);\nexport {\n NcDateTimePicker as default\n};\n//# sourceMappingURL=NcDateTimePicker.mjs.map\n"],"names":["isDate","value","toDate","isValidDate","startOfWeek","firstDayOfWeek","date","day","diff","startOfWeekYear","_ref","_ref$firstDayOfWeek","_ref$firstWeekContain","firstWeekContainsDate","year","firstDateOfFirstWeek","i","getWeek","_ref2","_ref2$firstDayOfWeek","_ref2$firstWeekContai","firstDateOfThisWeek","locale","REGEX_FORMAT","pad","val","len","output","sign","getOffset","formatTimezone","offset","delimeter","absOffset","hours","minutes","meridiem","h","_","isLowercase","word","formatFlags","y","meridiemFunc","format","str","options","formatStr","defaultLocale","match","p1","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","arr2","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","source","key","_defineProperty","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_n","_d","_e","_i","_s","err","obj","formattingTokens","match1","match2","match3","match4","match1to2","matchShortOffset","matchSigned","matchTimestamp","YEAR","MONTH","DAY","HOUR","MINUTE","SECOND","MILLISECOND","parseFlags","addParseFlag","token","regex","callback","tokens","func","input","escapeStringRegExp","matchWordRegExp","localeKey","array","matchWordCallback","index","cent","matchMeridiem","defaultIsPM","isPM","offsetFromString","_ref8","_ref9","symbol","hour","minute","to24hour","getFullInputArray","backupDate","result","backupArr","useBackup","createDate","m","d","M","s","ms","createUTCDate","_len","args","_key","makeParser","dateString","length","mark","parseTo","parser","parse","_options$locale","_locale","_options$backupDate","parseResult","month","second","millisecond","weekday","week","inputArray","firstDate","parsedDate","_typeof","_extends","_objectSpread2","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","_unsupportedIterableToArray","o","minLen","_arrayLikeToArray","n","_extends$1","a","b","c","normalMerge","toArrayMerge","functionalMerge","mergeJsxProps","e","f","g","mergeFn","helper","isValidRangeDate","isValidDates","dates","getValidDate","backup","startOfYear","startOfMonth","startOfDay","getCalendar","calendar","lastDayInLastMonth","firstDayInLastMonth","lastDayInCurrentMonth","lastMonthLength","nextMonthLength","_i2","setMonth","dirtyDate","dirtyMonth","daysInMonth","setYear","dirtyYear","assignTime","time","chunk","size","isObject","pick","props","res","prop","mergeDeep","unwrapExports","x","createCommonjsModule","fn","module","en","exports","_default","en$1","lang","locales","name","isLocal","l","getLocale","rafThrottle","isRunning","_this","getPopupElementSize","element","originalDisplay","originalVisibility","styles","width","height","getRelativePosition","el","targetWidth","targetHeight","fixed","left","top","offsetX","offsetY","relativeRect","dw","dh","getScrollParent","node","until","style","scroll","script","_this2","relativeElement","evt","popup","appendToBody","_this$_popupRect","_getRelativePosition","normalizeComponent","template","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","__vue_script__","__vue_render__","_vm","_h","_c","__vue_staticRenderFns__","__vue_inject_styles__","__vue_component__","__vue_render__$1","__vue_staticRenderFns__$1","__vue_inject_styles__$1","__vue_component__$1","__vue_render__$2","__vue_staticRenderFns__$2","__vue_inject_styles__$2","__vue_component__$2","__vue_render__$3","__vue_staticRenderFns__$3","__vue_inject_styles__$3","__vue_component__$3","script$1","__vue_script__$1","__vue_render__$4","__vue_staticRenderFns__$4","__vue_inject_styles__$4","__vue_component__$4","script$2","_this$getLocale","yearFormat","monthBeforeYear","_this$getLocale$month","monthFormat","yearLabel","monthLabel","days","type","v","panel","cell","_index$split$map","_index$split$map2","row","col","fmt","__vue_script__$2","__vue_render__$5","item","$event","j","__vue_staticRenderFns__$5","__vue_inject_styles__$5","__vue_component__$5","script$3","monthsLocale","months","text","__vue_script__$3","__vue_render__$6","__vue_staticRenderFns__$6","__vue_inject_styles__$6","__vue_component__$6","script$4","last","firstYear","years","__vue_script__$4","__vue_render__$7","__vue_staticRenderFns__$7","__vue_inject_styles__$7","__vue_component__$7","CalendarPanel","panels","map","start","calendarDate","oldCalendar","oldPanel","_date","_date2","cellDate","notCurrentMonth","classes","state","_cellDate","_cellDate2","end","active","innerCalendar","CalendarRange","calendars","_this$innerValue","startValue","endValue","adjustIndex","gap","_calendars","calendarLeft","calendarRight","yearDiff","monthDiff","min","max","currentDates","classnames","inRange","data","range","_range$map","_range$map2","calendarRange","on","prefixClass","scrollBarWidth","getScrollbarWidth","outer","inner","script$5","wrap","heightPercentage","scrollHeight","scrollTop","offsetTop","clientY","clientHeight","__vue_script__$5","__vue_render__$8","__vue_staticRenderFns__$8","__vue_inject_styles__$8","__vue_component__$8","padNumber","generateOptions","step","scrollTo","to","duration","difference","tick","script$6","cols","num","_this3","_this4","_this5","elements","scrollElement","currentTarget","colIndex","cellIndex","__vue_script__$6","__vue_render__$9","__vue_staticRenderFns__$9","__vue_inject_styles__$9","__vue_component__$9","parseOption","values","scrollTo$1","script$7","startMinutes","endMinutes","stepMinutes","timeMinutes","__vue_script__$7","__vue_render__$a","__vue_staticRenderFns__$a","__vue_inject_styles__$a","__vue_component__$a","script$8","titleFormat","defaultProps","minHour","maxHour","__vue_script__$8","__vue_render__$b","__vue_staticRenderFns__$b","__vue_inject_styles__$b","__vue_component__$b","TimeRange","_this$value","defaultValues","DatetimePanel","datetime","calendarProps","timeProps","DatetimeRange","datetimes","componentMap","componentRangeMap","DatePicker","types","close","disabledDate","disabledTime","nextDates","keyCode","fallback","slotFn","className","attrs","events","calendarIcon","Component","content","_class","inline","disabled","sidedar","Vue","Binary","aString","aValue","b64","o1","o2","o3","h1","h2","h3","h4","bits","ac","enc","tmp_arr","r","dec","DURATION_LETTERS","DATA_PROPS_TO_COPY","Duration","aSeconds","string","aStr","pos","dict","chunks","numeric","parseDurationChunk","aData","seconds","secs","trunc","aOther","thisSeconds","otherSeconds","letter","number","isStrictlyNaN","Time","_daysInMonth","aDayOfYear","aYear","doy","tt","is_leap","strictParseInt","zone","zoneId","Timezone","timeData","aProperty","aDate","useUTC","aZone","aWeekStart","t","dow","wkst","yr","LTRS","dom","#epochTime","attr","timezone","TimezoneService","firstDow","dowCacheKey","q","Y","aFirstDayOfWeek","delta","aDayOfWeek","aPos","otherDay","startDow","endDow","wnCacheKey","week1","dt","isoyear","daysBetween","answer","aDuration","mult","unixTime","other","tz","rc","copy","zone_equals","design$1","pad2","aExtraDays","aExtraHours","aExtraMinutes","aExtraSeconds","aTime","minutesOverflow","hoursOverflow","daysOverflow","yearsOverflow","defineAttr","CHAR","VALUE_DELIMITER","PARAM_DELIMITER","PARAM_NAME_DELIMITER","DEFAULT_VALUE_TYPE$1","DEFAULT_PARAM_TYPE","RFC6868_REPLACE_MAP$1","root","line","ParserError","designSet","valuePos","paramPos","lastParamIndex","lastValuePos","params","parsedParams","newComponent","valueType","multiValue","structuredValue","propertyDetails","splitName","ungroupedName","lastParam","delim","lcname","mvdelim","extendedValue","propValuePos","nextPos","length_before","delimiter","buffer","innerMulti","lastPos","unescapedIndexOf","firstChar","newlineOffset","OPTIONS","Timezone$1","from_zone","to_zone","utcOffset","#utcTimezone","#localTimezone","change","jCal","tt_change","change_num","change_num_to_use","clone","zone_change","tmp_change","prev_zone_change","want_daylight","idx","binsearchInsert","today","changesEndYear","subcomps","compLen","compIdx","aComponent","changes","dtstart","convert_tzoffset","init_changes","changebase","rdate","rrule","iterator","occ","zones","utc","tzid","updateTimezones","vcal","allsubs","properties","vtimezones","reqTzid","comp","formatClassType","search","list","seekVal","cmpfunc","low","high","mid","cmpval","aSrc","aDeep","foldline","aLine","line_length","cp","ICALmodule","extend","descr","helpers","UtcOffset","instance","factor","VCardTime","aIcalType","part","parts","tmz","splitzone","tm","dtlen","tmlen","hasDashDate","hasDashTime","icaltype","mm","hasYear","hasMonth","hasDay","hasHour","hasMinute","hasSecond","datepart","timepart","RecurIterator","Recur","InvalidRecurrenceRuleError","wkdy","dayName","untilYear","tempLast","initLast","bydow","dayOfMonth","normalized","again","before","valid","inc","this_freq","end_of_data","week_no","rules","newRules","ruleIdx","rule","isInit","byMonthDay","byDay","dateIdx","dateLen","dayLen","dataIsValid","self","lastDay","initMonth","nextMonth","monthsCounter","next","dayIdx","data_valid","setpos","setpos_total","last_day","coded_day","matches","aRuleType","aInterval","aDateAttr","aFollowingAttr","aPreviousIncr","has_by_rule","dta","aFactor","aNextIncrement","nextunit","validWeeks","monthIdx","first_week","last_week","weekIdx","partCount","t1","t2","monthday","t3","first_dow","doy_offset","last_dow","by_month_day","spIndex","bydayParts","month_day","first_matching_day","last_matching_day","expandedDays","weekno","daysInYear","days_list","tmp","start_dow","end_dow","end_year_day","tmp_start_doy","first","this_dow","aRules","one","two","indexMapValue","ruleMapValue","pass","ruleType","bydata","weekNo","req","deftime","VALID_DAY_NAMES","VALID_BYDAY_PART","DOW_MAP","REVERSE_DOW_MAP","entry","ALLOWED_FREQ","fmtIcal","ucname","partDesign","partArr","partSet","optionDesign","aStart","aType","aValues","aStartTime","aRecurrenceId","uckey","k","kparts","parseNumericValue","Period","aProp","aLenient","fromDateOrDateTimeString","dateProp","FROM_ICAL_NEWLINE","TO_ICAL_NEWLINE","FROM_VCARD_NEWLINE","TO_VCARD_NEWLINE","createTextType","fromNewline","toNewline","structuredEscape","replaceNewline","regEx","DEFAULT_TYPE_TEXT","DEFAULT_TYPE_TEXT_MULTI","DEFAULT_TYPE_TEXT_STRUCTURED","DEFAULT_TYPE_INTEGER","DEFAULT_TYPE_DATETIME_DATE","DEFAULT_TYPE_DATETIME","DEFAULT_TYPE_URI","DEFAULT_TYPE_UTCOFFSET","DEFAULT_TYPE_RECUR","DEFAULT_TYPE_DATE_ANDOR_TIME","replaceNewlineReplace","newline","commonProperties","commonValues","parsed","icalParams","icalValues","aBinary","aRecur","icalProperties","vcardValues","isFromIcal","lastChar","signChar","vcardParams","vcardProperties","vcard3Values","vcard3Params","vcard3Properties","icalSet","vcardSet","vcard3Set","design","componentName","LINE_ENDING","DEFAULT_VALUE_TYPE","RFC6868_REPLACE_MAP","stringify","component","propIdx","propLen","designSetName","comps","property","noFold","jsName","groupName","paramName","paramDesign","propDetails","isDefault","force","NAME_INDEX$1","PROP_INDEX","TYPE_INDEX","VALUE_INDEX","Property","parent","p","designSetChanged","parameters","details","NAME_INDEX","PROPERTY_INDEX","COMPONENT_INDEX","jCalLen","jCalIndex","cache","nameOrObject","objects","cached","nameOrComp","removed","nameOrProp","hydratedZone","RecurExpansion","compare","maxTries","currentTry","toJSON","propertyName","iters","iterTime","iterIdx","chosenIter","Event","event","id","compareRangeException","rangeItem","occurrence","utcId","rangeExceptionId","exception","startDiff","original","newStart","startTime","endDate","propName","ComponentParser","ical","components","timezoneId","ics","ICAL","local","iCalComponent","version","aliases","tzData","TimezoneManager","level","includeAliases","timezones","aliasName","resolvedTimezone","pendingAliasName","timezoneManager","getTimezoneManager","register","t43","t25","getSortedTimezoneList","timezoneList","additionalTimezones","sortedByContinent","sortedList","continent","getReadableTimezoneName","additionalTimezone","label","getTimezoneManager$1","initialized","_sfc_main","NcSelect","GenRandomId","useModelMigration","timezoneManager2","timezonesGrouped","group","newValue","option","terms","region","term","_sfc_render","_sfc_staticRenderFns","__component__","NcTimezonePicker","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","_sfc_main$2","_sfc_render$2","_sfc_staticRenderFns$2","__component__$2","CalendarBlank","_sfc_main$1","_sfc_render$1","_sfc_staticRenderFns$1","__component__$1","Web","t38","formatMap","NcPopover","getMonthNames","getMonthNamesShort","getDayNames","getDayNamesShort","getDayNamesMin","getFirstDay","_a","firstThursday","yearStart","logger","$$v","slot","scope","NcDateTimePicker","ScopeComponent"],"mappings":"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Cb,EACE,uBAAwB,CACtB,QAAS,cACb,EACE,0BAA2B,CACzB,QAAS,gCACb,EACE,gBAAiB,CACf,QAAS,cACb,EACE,gBAAiB,CACf,QAAS,gBACb,EACE,eAAgB,CACd,QAAS,aACb,EACE,cAAe,CACb,QAAS,kBACb,EACE,yBAA0B,CACxB,QAAS,iBACb,EACE,kBAAmB,CACjB,QAAS,gBACb,EACE,qBAAsB,CACpB,QAAS,aACb,EACE,2BAA4B,CAC1B,QAAS,WACb,EACE,uBAAwB,CACtB,QAAS,iBACb,EACE,sBAAuB,CACrB,QAAS,eACb,EACE,2BAA4B,CAC1B,QAAS,YACb,EACE,wBAAyB,CACvB,QAAS,cACb,EACE,+BAAgC,CAC9B,QAAS,gBACb,EACE,2BAA4B,CAC1B,QAAS,qBACb,EACE,yBAA0B,CACxB,QAAS,cACb,EACE,+BAAgC,CAC9B,QAAS,oBACb,EACE,gCAAiC,CAC/B,QAAS,mBACb,EACE,6BAA8B,CAC5B,QAAS,aACb,EACE,kCAAmC,CACjC,QAAS,gBACb,EACE,+BAAgC,CAC9B,QAAS,iBACb,EACE,iCAAkC,CAChC,QAAS,eACb,EACE,gCAAiC,CAC/B,QAAS,qBACb,EACE,wBAAyB,CACvB,QAAS,iBACb,EACE,iCAAkC,CAChC,QAAS,qBACb,EACE,sBAAuB,CACrB,QAAS,eACb,EACE,0BAA2B,CACzB,QAAS,gBACb,EACE,6BAA8B,CAC5B,QAAS,oBACb,EACE,iCAAkC,CAChC,QAAS,mBACb,EACE,wBAAyB,CACvB,QAAS,kBACb,EACE,sBAAuB,CACrB,QAAS,cACb,EACE,6BAA8B,CAC5B,QAAS,oBACb,EACE,UAAW,CACT,QAAS,KACb,EACE,YAAa,CACX,QAAS,KACb,EACE,UAAW,CACT,QAAS,KACb,EACE,UAAW,CACT,QAAS,KACb,EACE,eAAgB,CACd,QAAS,KACb,EACE,WAAY,CACV,QAAS,KACb,EACE,iBAAkB,CAChB,QAAS,eACb,EACE,oBAAqB,CACnB,QAAS,aACb,EACE,qBAAsB,CACpB,QAAS,cACb,EACE,IAAK,CACH,QAAS,KACb,EACE,oBAAqB,CACnB,QAAS,eACb,EACE,QAAS,CACP,QAAS,KACb,EACE,KAAM,CACJ,QAAS,KACb,EACE,oBAAqB,CACnB,QAAS,kBACb,EACE,yBAA0B,CACxB,QAAS,cACb,EACE,0BAA2B,CACzB,QAAS,iBACb,EACE,UAAW,CACT,QAAS,KACb,EACE,0BAA2B,CACzB,QAAS,oBACb,EACE,yBAA0B,CACxB,QAAS,kBACb,EACE,sBAAuB,CACrB,QAAS,eACb,EACE,qBAAsB,CACpB,QAAS,aACb,EACE,uBAAwB,CACtB,QAAS,gBACb,EACE,uBAAwB,CACtB,QAAS,YACb,EACE,4BAA6B,CAC3B,QAAS,oBACb,EACE,sBAAuB,CACrB,QAAS,YACb,EACE,sBAAuB,CACrB,QAAS,gBACb,EACE,6BAA8B,CAC5B,QAAS,oBACb,EACE,wBAAyB,CACvB,QAAS,cACb,EACE,0BAA2B,CACzB,QAAS,kBACb,EACE,4BAA6B,CAC3B,QAAS,aACb,EACE,2BAA4B,CAC1B,QAAS,oBACb,EACE,wBAAyB,CACvB,QAAS,mBACb,EACE,yBAA0B,CACxB,QAAS,gBACb,EACE,kCAAmC,CACjC,QAAS,mBACb,EACE,wBAAyB,CACvB,QAAS,cACb,EACE,gCAAiC,CAC/B,QAAS,kBACb,EACE,wBAAyB,CACvB,QAAS,iBACb,EACE,sBAAuB,CACrB,QAAS,eACb,EACE,4BAA6B,CAC3B,QAAS,kBACb,EACE,6BAA8B,CAC5B,QAAS,kBACb,EACE,gCAAiC,CAC/B,QAAS,cACb,EACE,2BAA4B,CAC1B,QAAS,kBACb,EACE,2BAA4B,CAC1B,QAAS,kBACb,EACE,wBAAyB,CACvB,QAAS,qBACb,EACE,iCAAkC,CAChC,QAAS,sBACb,EACE,mBAAoB,CAClB,QAAS,kBACb,EACE,yBAA0B,CACxB,QAAS,cACb,EACE,yBAA0B,CACxB,QAAS,kBACb,EACE,wBAAyB,CACvB,QAAS,cACb,EACE,sBAAuB,CACrB,QAAS,oBACb,EACE,sBAAuB,CACrB,QAAS,gBACb,EACE,qBAAsB,CACpB,QAAS,eACb,EACE,wBA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]} \ No newline at end of file diff --git a/js/NcSelect--Dtr1_4N.chunk.mjs b/js/NcSelect--Dtr1_4N.chunk.mjs deleted file mode 100644 index 157c47d4..00000000 --- a/js/NcSelect--Dtr1_4N.chunk.mjs +++ /dev/null @@ -1,91 +0,0 @@ -/*! third party licenses: js/vendor.LICENSE.txt */ -import{n as j,e as vt,B as Ce,C as Je,D as Qe,f as Vt,E as J,F as tn,H as en,I as it,V as Bt,J as Wt,K as ct,L as It,M as nn,O as sn,P as Oe,Q as on,R as Xt,T as rn,g as an,_ as Le,t as B,U as jt,W as Ae,X as Y,r as ht,Y as ln,Z as cn,$ as qt,a0 as Nt,l as Pt,a1 as Te,h as ke,i as un,a2 as hn,a3 as pn,a4 as Ct,a5 as Ot,a6 as dn,a7 as fn,a8 as gn,u as mn,a9 as vn,aa as yn,G as Kt,ab as bn}from"./logreader-main.mjs";import{g as wn}from"./colors-BMiIMYXK-Dwr2Mei3.chunk.mjs";function xn(t,e,n){const i=document.querySelector(`#initial-state-${t}-${e}`);if(i===null)throw new Error(`Could not find initial state ${e} of ${t}`);try{return JSON.parse(atob(i.value))}catch{throw new Error(`Could not parse initial state ${e} of ${t}`)}}function De(){try{return xn("core","capabilities")}catch{return console.debug("Could not find capabilities initial state fall back to _oc_capabilities"),"_oc_capabilities"in window?window._oc_capabilities:{}}}const pt=Math.min,G=Math.max,dt=Math.round,at=Math.floor,F=t=>({x:t,y:t}),Sn={left:"right",right:"left",bottom:"top",top:"bottom"},_n={start:"end",end:"start"};function Gt(t,e,n){return G(t,pt(e,n))}function tt(t,e){return typeof t=="function"?t(e):t}function R(t){return t.split("-")[0]}function yt(t){return t.split("-")[1]}function zt(t){return t==="x"?"y":"x"}function Be(t){return t==="y"?"height":"width"}const Cn=new Set(["top","bottom"]);function z(t){return Cn.has(R(t))?"y":"x"}function Ie(t){return zt(z(t))}function On(t,e,n){n===void 0&&(n=!1);const i=yt(t),r=Ie(t),u=Be(r);let h=r==="x"?i===(n?"end":"start")?"right":"left":i==="start"?"bottom":"top";return e.reference[u]>e.floating[u]&&(h=ft(h)),[h,ft(h)]}function Ln(t){const e=ft(t);return[Mt(t),e,Mt(e)]}function Mt(t){return t.replace(/start|end/g,e=>_n[e])}const Zt=["left","right"],Yt=["right","left"],An=["top","bottom"],Tn=["bottom","top"];function kn(t,e,n){switch(t){case"top":case"bottom":return n?e?Yt:Zt:e?Zt:Yt;case"left":case"right":return e?An:Tn;default:return[]}}function Dn(t,e,n,i){const r=yt(t);let u=kn(R(t),n==="start",i);return r&&(u=u.map(h=>h+"-"+r),e&&(u=u.concat(u.map(Mt)))),u}function ft(t){return t.replace(/left|right|bottom|top/g,e=>Sn[e])}function Bn(t){return{top:0,right:0,bottom:0,left:0,...t}}function In(t){return typeof t!="number"?Bn(t):{top:t,right:t,bottom:t,left:t}}function gt(t){const{x:e,y:n,width:i,height:r}=t;return{width:i,height:r,top:n,left:e,right:e+i,bottom:n+r,x:e,y:n}}function Jt(t,e,n){let{reference:i,floating:r}=t;const u=z(e),h=Ie(e),o=Be(h),f=R(e),a=u==="y",l=i.x+i.width/2-r.width/2,c=i.y+i.height/2-r.height/2,p=i[o]/2-r[o]/2;let d;switch(f){case"top":d={x:l,y:i.y-r.height};break;case"bottom":d={x:l,y:i.y+i.height};break;case"right":d={x:i.x+i.width,y:c};break;case"left":d={x:i.x-r.width,y:c};break;default:d={x:i.x,y:i.y}}switch(yt(e)){case"start":d[h]-=p*(n&&a?-1:1);break;case"end":d[h]+=p*(n&&a?-1:1);break}return d}const Nn=async(t,e,n)=>{const{placement:i="bottom",strategy:r="absolute",middleware:u=[],platform:h}=n,o=u.filter(Boolean),f=await(h.isRTL==null?void 0:h.isRTL(e));let a=await h.getElementRects({reference:t,floating:e,strategy:r}),{x:l,y:c}=Jt(a,i,f),p=i,d={},v=0;for(let y=0;yC<=0)){var g,m;const C=(((g=u.flip)==null?void 0:g.index)||0)+1,O=$[C];if(O&&(!(c==="alignment"&&_!==z(O))||s.every(P=>z(P.placement)===_?P.overflows[0]>0:!0)))return{data:{index:C,overflows:s},reset:{placement:O}};let I=(m=s.filter(P=>P.overflows[0]<=0).sort((P,M)=>P.overflows[1]-M.overflows[1])[0])==null?void 0:m.placement;if(!I)switch(d){case"bestFit":{var b;const P=(b=s.filter(M=>{if(T){const D=z(M.placement);return D===_||D==="y"}return!0}).map(M=>[M.placement,M.overflows.filter(D=>D>0).reduce((D,_t)=>D+_t,0)]).sort((M,D)=>M[1]-D[1])[0])==null?void 0:b[0];P&&(I=P);break}case"initialPlacement":I=o;break}if(r!==I)return{reset:{placement:I}}}return{}}}},Pe=new Set(["left","top"]);async function Mn(t,e){const{placement:n,platform:i,elements:r}=t,u=await(i.isRTL==null?void 0:i.isRTL(r.floating)),h=R(n),o=yt(n),f=z(n)==="y",a=Pe.has(h)?-1:1,l=u&&f?-1:1,c=tt(e,t);let{mainAxis:p,crossAxis:d,alignmentAxis:v}=typeof c=="number"?{mainAxis:c,crossAxis:0,alignmentAxis:null}:{mainAxis:c.mainAxis||0,crossAxis:c.crossAxis||0,alignmentAxis:c.alignmentAxis};return o&&typeof v=="number"&&(d=o==="end"?v*-1:v),f?{x:d*l,y:p*a}:{x:p*a,y:d*l}}const En=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){var n,i;const{x:r,y:u,placement:h,middlewareData:o}=e,f=await Mn(e,t);return h===((n=o.offset)==null?void 0:n.placement)&&(i=o.arrow)!=null&&i.alignmentOffset?{}:{x:r+f.x,y:u+f.y,data:{...f,placement:h}}}}},Un=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(e){const{x:n,y:i,placement:r}=e,{mainAxis:u=!0,crossAxis:h=!1,limiter:o={fn:w=>{let{x,y:_}=w;return{x,y:_}}},...f}=tt(t,e),a={x:n,y:i},l=await Ne(e,f),c=z(R(r)),p=zt(c);let d=a[p],v=a[c];if(u){const w=p==="y"?"top":"left",x=p==="y"?"bottom":"right",_=d+l[w],S=d-l[x];d=Gt(_,d,S)}if(h){const w=c==="y"?"top":"left",x=c==="y"?"bottom":"right",_=v+l[w],S=v-l[x];v=Gt(_,v,S)}const y=o.fn({...e,[p]:d,[c]:v});return{...y,data:{x:y.x-n,y:y.y-i,enabled:{[p]:u,[c]:h}}}}}},Fn=function(t){return t===void 0&&(t={}),{options:t,fn(e){const{x:n,y:i,placement:r,rects:u,middlewareData:h}=e,{offset:o=0,mainAxis:f=!0,crossAxis:a=!0}=tt(t,e),l={x:n,y:i},c=z(r),p=zt(c);let d=l[p],v=l[c];const y=tt(o,e),w=typeof y=="number"?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(f){const S=p==="y"?"height":"width",A=u.reference[p]-u.floating[S]+w.mainAxis,L=u.reference[p]+u.reference[S]-w.mainAxis;dL&&(d=L)}if(a){var x,_;const S=p==="y"?"width":"height",A=Pe.has(R(r)),L=u.reference[c]-u.floating[S]+(A&&((x=h.offset)==null?void 0:x[c])||0)+(A?0:w.crossAxis),T=u.reference[c]+u.reference[S]+(A?0:((_=h.offset)==null?void 0:_[c])||0)-(A?w.crossAxis:0);vT&&(v=T)}return{[p]:d,[c]:v}}}};function bt(){return typeof window<"u"}function nt(t){return Me(t)?(t.nodeName||"").toLowerCase():"#document"}function N(t){var e;return(t==null||(e=t.ownerDocument)==null?void 0:e.defaultView)||window}function q(t){var e;return(e=(Me(t)?t.ownerDocument:t.document)||window.document)==null?void 0:e.documentElement}function Me(t){return bt()?t instanceof Node||t instanceof N(t).Node:!1}function E(t){return bt()?t instanceof Element||t instanceof N(t).Element:!1}function V(t){return bt()?t instanceof HTMLElement||t instanceof N(t).HTMLElement:!1}function Qt(t){return!bt()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof N(t).ShadowRoot}const Vn=new Set(["inline","contents"]);function rt(t){const{overflow:e,overflowX:n,overflowY:i,display:r}=U(t);return/auto|scroll|overlay|hidden|clip/.test(e+i+n)&&!Vn.has(r)}const jn=new Set(["table","td","th"]);function qn(t){return jn.has(nt(t))}const zn=[":popover-open",":modal"];function wt(t){return zn.some(e=>{try{return t.matches(e)}catch{return!1}})}const $n=["transform","translate","scale","rotate","perspective"],Rn=["transform","translate","scale","rotate","perspective","filter"],Hn=["paint","layout","strict","content"];function $t(t){const e=Rt(),n=E(t)?U(t):t;return $n.some(i=>n[i]?n[i]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!e&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!e&&(n.filter?n.filter!=="none":!1)||Rn.some(i=>(n.willChange||"").includes(i))||Hn.some(i=>(n.contain||"").includes(i))}function Wn(t){let e=H(t);for(;V(e)&&!et(e);){if($t(e))return e;if(wt(e))return null;e=H(e)}return null}function Rt(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const Xn=new Set(["html","body","#document"]);function et(t){return Xn.has(nt(t))}function U(t){return N(t).getComputedStyle(t)}function xt(t){return E(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function H(t){if(nt(t)==="html")return t;const e=t.assignedSlot||t.parentNode||Qt(t)&&t.host||q(t);return Qt(e)?e.host:e}function Ee(t){const e=H(t);return et(e)?t.ownerDocument?t.ownerDocument.body:t.body:V(e)&&rt(e)?e:Ee(e)}function ot(t,e,n){var i;e===void 0&&(e=[]),n===void 0&&(n=!0);const r=Ee(t),u=r===((i=t.ownerDocument)==null?void 0:i.body),h=N(r);if(u){const o=Et(h);return e.concat(h,h.visualViewport||[],rt(r)?r:[],o&&n?ot(o):[])}return e.concat(r,ot(r,[],n))}function Et(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function Ue(t){const e=U(t);let n=parseFloat(e.width)||0,i=parseFloat(e.height)||0;const r=V(t),u=r?t.offsetWidth:n,h=r?t.offsetHeight:i,o=dt(n)!==u||dt(i)!==h;return o&&(n=u,i=h),{width:n,height:i,$:o}}function Ht(t){return E(t)?t:t.contextElement}function Q(t){const e=Ht(t);if(!V(e))return F(1);const n=e.getBoundingClientRect(),{width:i,height:r,$:u}=Ue(e);let h=(u?dt(n.width):n.width)/i,o=(u?dt(n.height):n.height)/r;return(!h||!Number.isFinite(h))&&(h=1),(!o||!Number.isFinite(o))&&(o=1),{x:h,y:o}}const Kn=F(0);function Fe(t){const e=N(t);return!Rt()||!e.visualViewport?Kn:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function Gn(t,e,n){return e===void 0&&(e=!1),!n||e&&n!==N(t)?!1:e}function Z(t,e,n,i){e===void 0&&(e=!1),n===void 0&&(n=!1);const r=t.getBoundingClientRect(),u=Ht(t);let h=F(1);e&&(i?E(i)&&(h=Q(i)):h=Q(t));const o=Gn(u,n,i)?Fe(u):F(0);let f=(r.left+o.x)/h.x,a=(r.top+o.y)/h.y,l=r.width/h.x,c=r.height/h.y;if(u){const p=N(u),d=i&&E(i)?N(i):i;let v=p,y=Et(v);for(;y&&i&&d!==v;){const w=Q(y),x=y.getBoundingClientRect(),_=U(y),S=x.left+(y.clientLeft+parseFloat(_.paddingLeft))*w.x,A=x.top+(y.clientTop+parseFloat(_.paddingTop))*w.y;f*=w.x,a*=w.y,l*=w.x,c*=w.y,f+=S,a+=A,v=N(y),y=Et(v)}}return gt({width:l,height:c,x:f,y:a})}function St(t,e){const n=xt(t).scrollLeft;return e?e.left+n:Z(q(t)).left+n}function Ve(t,e){const n=t.getBoundingClientRect(),i=n.left+e.scrollLeft-St(t,n),r=n.top+e.scrollTop;return{x:i,y:r}}function Zn(t){let{elements:e,rect:n,offsetParent:i,strategy:r}=t;const u=r==="fixed",h=q(i),o=e?wt(e.floating):!1;if(i===h||o&&u)return n;let f={scrollLeft:0,scrollTop:0},a=F(1);const l=F(0),c=V(i);if((c||!c&&!u)&&((nt(i)!=="body"||rt(h))&&(f=xt(i)),V(i))){const d=Z(i);a=Q(i),l.x=d.x+i.clientLeft,l.y=d.y+i.clientTop}const p=h&&!c&&!u?Ve(h,f):F(0);return{width:n.width*a.x,height:n.height*a.y,x:n.x*a.x-f.scrollLeft*a.x+l.x+p.x,y:n.y*a.y-f.scrollTop*a.y+l.y+p.y}}function Yn(t){return Array.from(t.getClientRects())}function Jn(t){const e=q(t),n=xt(t),i=t.ownerDocument.body,r=G(e.scrollWidth,e.clientWidth,i.scrollWidth,i.clientWidth),u=G(e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight);let h=-n.scrollLeft+St(t);const o=-n.scrollTop;return U(i).direction==="rtl"&&(h+=G(e.clientWidth,i.clientWidth)-r),{width:r,height:u,x:h,y:o}}const te=25;function Qn(t,e){const n=N(t),i=q(t),r=n.visualViewport;let u=i.clientWidth,h=i.clientHeight,o=0,f=0;if(r){u=r.width,h=r.height;const l=Rt();(!l||l&&e==="fixed")&&(o=r.offsetLeft,f=r.offsetTop)}const a=St(i);if(a<=0){const l=i.ownerDocument,c=l.body,p=getComputedStyle(c),d=l.compatMode==="CSS1Compat"&&parseFloat(p.marginLeft)+parseFloat(p.marginRight)||0,v=Math.abs(i.clientWidth-c.clientWidth-d);v<=te&&(u-=v)}else a<=te&&(u+=a);return{width:u,height:h,x:o,y:f}}const ts=new Set(["absolute","fixed"]);function es(t,e){const n=Z(t,!0,e==="fixed"),i=n.top+t.clientTop,r=n.left+t.clientLeft,u=V(t)?Q(t):F(1),h=t.clientWidth*u.x,o=t.clientHeight*u.y,f=r*u.x,a=i*u.y;return{width:h,height:o,x:f,y:a}}function ee(t,e,n){let i;if(e==="viewport")i=Qn(t,n);else if(e==="document")i=Jn(q(t));else if(E(e))i=es(e,n);else{const r=Fe(t);i={x:e.x-r.x,y:e.y-r.y,width:e.width,height:e.height}}return gt(i)}function je(t,e){const n=H(t);return n===e||!E(n)||et(n)?!1:U(n).position==="fixed"||je(n,e)}function ns(t,e){const n=e.get(t);if(n)return n;let i=ot(t,[],!1).filter(o=>E(o)&&nt(o)!=="body"),r=null;const u=U(t).position==="fixed";let h=u?H(t):t;for(;E(h)&&!et(h);){const o=U(h),f=$t(h);!f&&o.position==="fixed"&&(r=null),(u?!f&&!r:!f&&o.position==="static"&&r&&ts.has(r.position)||rt(h)&&!f&&je(t,h))?i=i.filter(a=>a!==h):r=o,h=H(h)}return e.set(t,i),i}function ss(t){let{element:e,boundary:n,rootBoundary:i,strategy:r}=t;const u=[...n==="clippingAncestors"?wt(e)?[]:ns(e,this._c):[].concat(n),i],h=u[0],o=u.reduce((f,a)=>{const l=ee(e,a,r);return f.top=G(l.top,f.top),f.right=pt(l.right,f.right),f.bottom=pt(l.bottom,f.bottom),f.left=G(l.left,f.left),f},ee(e,h,r));return{width:o.right-o.left,height:o.bottom-o.top,x:o.left,y:o.top}}function is(t){const{width:e,height:n}=Ue(t);return{width:e,height:n}}function os(t,e,n){const i=V(e),r=q(e),u=n==="fixed",h=Z(t,!0,u,e);let o={scrollLeft:0,scrollTop:0};const f=F(0);function a(){f.x=St(r)}if(i||!i&&!u)if((nt(e)!=="body"||rt(r))&&(o=xt(e)),i){const d=Z(e,!0,u,e);f.x=d.x+e.clientLeft,f.y=d.y+e.clientTop}else r&&a();u&&!i&&r&&a();const l=r&&!i&&!u?Ve(r,o):F(0),c=h.left+o.scrollLeft-f.x-l.x,p=h.top+o.scrollTop-f.y-l.y;return{x:c,y:p,width:h.width,height:h.height}}function Lt(t){return U(t).position==="static"}function ne(t,e){if(!V(t)||U(t).position==="fixed")return null;if(e)return e(t);let n=t.offsetParent;return q(t)===n&&(n=n.ownerDocument.body),n}function qe(t,e){const n=N(t);if(wt(t))return n;if(!V(t)){let r=H(t);for(;r&&!et(r);){if(E(r)&&!Lt(r))return r;r=H(r)}return n}let i=ne(t,e);for(;i&&qn(i)&&Lt(i);)i=ne(i,e);return i&&et(i)&&Lt(i)&&!$t(i)?n:i||Wn(t)||n}const rs=async function(t){const e=this.getOffsetParent||qe,n=this.getDimensions,i=await n(t.floating);return{reference:os(t.reference,await e(t.floating),t.strategy),floating:{x:0,y:0,width:i.width,height:i.height}}};function as(t){return U(t).direction==="rtl"}const ls={convertOffsetParentRelativeRectToViewportRelativeRect:Zn,getDocumentElement:q,getClippingRect:ss,getOffsetParent:qe,getElementRects:rs,getClientRects:Yn,getDimensions:is,getScale:Q,isElement:E,isRTL:as};function ze(t,e){return t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height}function cs(t,e){let n=null,i;const r=q(t);function u(){var o;clearTimeout(i),(o=n)==null||o.disconnect(),n=null}function h(o,f){o===void 0&&(o=!1),f===void 0&&(f=1),u();const a=t.getBoundingClientRect(),{left:l,top:c,width:p,height:d}=a;if(o||e(),!p||!d)return;const v=at(c),y=at(r.clientWidth-(l+p)),w=at(r.clientHeight-(c+d)),x=at(l),_={rootMargin:-v+"px "+-y+"px "+-w+"px "+-x+"px",threshold:G(0,pt(1,f))||1};let S=!0;function A(L){const T=L[0].intersectionRatio;if(T!==f){if(!S)return h();T?h(!1,T):i=setTimeout(()=>{h(!1,1e-7)},1e3)}T===1&&!ze(a,t.getBoundingClientRect())&&h(),S=!1}try{n=new IntersectionObserver(A,{..._,root:r.ownerDocument})}catch{n=new IntersectionObserver(A,_)}n.observe(t)}return h(!0),u}function us(t,e,n,i){i===void 0&&(i={});const{ancestorScroll:r=!0,ancestorResize:u=!0,elementResize:h=typeof ResizeObserver=="function",layoutShift:o=typeof IntersectionObserver=="function",animationFrame:f=!1}=i,a=Ht(t),l=r||u?[...a?ot(a):[],...ot(e)]:[];l.forEach(x=>{r&&x.addEventListener("scroll",n,{passive:!0}),u&&x.addEventListener("resize",n)});const c=a&&o?cs(a,n):null;let p=-1,d=null;h&&(d=new ResizeObserver(x=>{let[_]=x;_&&_.target===a&&d&&(d.unobserve(e),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var S;(S=d)==null||S.observe(e)})),n()}),a&&!f&&d.observe(a),d.observe(e));let v,y=f?Z(t):null;f&&w();function w(){const x=Z(t);y&&!ze(y,x)&&n(),y=x,v=requestAnimationFrame(w)}return n(),()=>{var x;l.forEach(_=>{r&&_.removeEventListener("scroll",n),u&&_.removeEventListener("resize",n)}),c?.(),(x=d)==null||x.disconnect(),d=null,f&&cancelAnimationFrame(v)}}const hs=En,ps=Un,ds=Pn,fs=Fn,gs=(t,e,n)=>{const i=new Map,r={platform:ls,...n},u={...r.platform,_c:i};return Nn(t,e,{...r,platform:u})};var Ut={exports:{}},ms=Ut.exports,se;function vs(){return se||(se=1,function(t,e){(function(n,i){t.exports=i()})(typeof self<"u"?self:ms,function(){return(()=>{var n={646:h=>{h.exports=function(o){if(Array.isArray(o)){for(var f=0,a=new Array(o.length);f{h.exports=function(o,f,a){return f in o?Object.defineProperty(o,f,{value:a,enumerable:!0,configurable:!0,writable:!0}):o[f]=a,o}},860:h=>{h.exports=function(o){if(Symbol.iterator in Object(o)||Object.prototype.toString.call(o)==="[object Arguments]")return Array.from(o)}},206:h=>{h.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}},319:(h,o,f)=>{var a=f(646),l=f(860),c=f(206);h.exports=function(p){return a(p)||l(p)||c()}},8:h=>{function o(f){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?h.exports=o=function(a){return typeof a}:h.exports=o=function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},o(f)}h.exports=o}},i={};function r(h){var o=i[h];if(o!==void 0)return o.exports;var f=i[h]={exports:{}};return n[h](f,f.exports,r),f.exports}r.n=h=>{var o=h&&h.__esModule?()=>h.default:()=>h;return r.d(o,{a:o}),o},r.d=(h,o)=>{for(var f in o)r.o(o,f)&&!r.o(h,f)&&Object.defineProperty(h,f,{enumerable:!0,get:o[f]})},r.o=(h,o)=>Object.prototype.hasOwnProperty.call(h,o),r.r=h=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(h,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(h,"__esModule",{value:!0})};var u={};return(()=>{r.r(u),r.d(u,{VueSelect:()=>$,default:()=>k,mixins:()=>W});var h=r(319),o=r.n(h),f=r(8),a=r.n(f),l=r(713),c=r.n(l);const p={props:{autoscroll:{type:Boolean,default:!0}},watch:{typeAheadPointer:function(){this.autoscroll&&this.maybeAdjustScroll()},open:function(s){var g=this;this.autoscroll&&s&&this.$nextTick(function(){return g.maybeAdjustScroll()})}},methods:{maybeAdjustScroll:function(){var s,g=((s=this.$refs.dropdownMenu)===null||s===void 0?void 0:s.children[this.typeAheadPointer])||!1;if(g){var m=this.getDropdownViewport(),b=g.getBoundingClientRect(),C=b.top,O=b.bottom,I=b.height;if(Cm.bottom)return this.$refs.dropdownMenu.scrollTop=g.offsetTop-(m.height-I)}},getDropdownViewport:function(){return this.$refs.dropdownMenu?this.$refs.dropdownMenu.getBoundingClientRect():{height:0,top:0,bottom:0}}}},d={data:function(){return{typeAheadPointer:-1}},watch:{filteredOptions:function(){if(this.resetFocusOnOptionsChange){for(var s=0;s=0;s--)if(this.selectable(this.filteredOptions[s])){this.typeAheadPointer=s;break}},typeAheadDown:function(){for(var s=this.typeAheadPointer+1;s0&&arguments[0]!==void 0?arguments[0]:null;return this.mutableLoading=s??!this.mutableLoading}}};function y(s,g,m,b,C,O,I,P){var M,D=typeof s=="function"?s.options:s;return g&&(D.render=g,D.staticRenderFns=m,D._compiled=!0),{exports:s,options:D}}const w={Deselect:y({},function(){var s=this.$createElement,g=this._self._c||s;return g("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10"}},[g("path",{attrs:{d:"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z"}})])},[]).exports,OpenIndicator:y({},function(){var s=this.$createElement,g=this._self._c||s;return g("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"10"}},[g("path",{attrs:{d:"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z"}})])},[]).exports},x={inserted:function(s,g,m){var b=m.context;if(b.appendToBody){document.body.appendChild(s);var C=b.$refs.toggle.getBoundingClientRect(),O=C.height,I=C.top,P=C.left,M=C.width,D=window.scrollX||window.pageXOffset,_t=window.scrollY||window.pageYOffset;s.unbindPosition=b.calculatePosition(s,b,{width:M+"px",left:D+P+"px",top:_t+I+O+"px"})}},unbind:function(s,g,m){m.context.appendToBody&&(s.unbindPosition&&typeof s.unbindPosition=="function"&&s.unbindPosition(),s.parentNode&&s.parentNode.removeChild(s))}},_=function(s){var g={};return Object.keys(s).sort().forEach(function(m){g[m]=s[m]}),JSON.stringify(g)};var S=0;const A=function(){return++S};function L(s,g){var m=Object.keys(s);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(s);g&&(b=b.filter(function(C){return Object.getOwnPropertyDescriptor(s,C).enumerable})),m.push.apply(m,b)}return m}function T(s){for(var g=1;g-1}},filter:{type:Function,default:function(s,g){var m=this;return s.filter(function(b){var C=m.getOptionLabel(b);return typeof C=="number"&&(C=C.toString()),m.filterBy(b,C,g)})}},createOption:{type:Function,default:function(s){return a()(this.optionList[0])==="object"?c()({},this.label,s):s}},resetFocusOnOptionsChange:{type:Boolean,default:!0},resetOnOptionsChange:{default:!1,validator:function(s){return["function","boolean"].includes(a()(s))}},clearSearchOnBlur:{type:Function,default:function(s){var g=s.clearSearchOnSelect,m=s.multiple;return g&&!m}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:function(){return[13]}},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:function(s,g){return s}},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default:function(s,g,m){var b=m.width,C=m.top,O=m.left;s.style.top=C,s.style.left=O,s.style.width=b}},dropdownShouldOpen:{type:Function,default:function(s){var g=s.noDrop,m=s.open,b=s.mutableLoading;return!g&&m&&!b}},keyboardFocusBorder:{type:Boolean,default:!1},uid:{type:[String,Number],default:function(){return A()}}},data:function(){return{search:"",open:!1,isComposing:!1,isKeyboardNavigation:!1,pushedTags:[],_value:[]}},computed:{isTrackingValues:function(){return this.value===void 0||this.$options.propsData.hasOwnProperty("reduce")},selectedValue:function(){var s=this.value;return this.isTrackingValues&&(s=this.$data._value),s!=null&&s!==""?[].concat(s):[]},optionList:function(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl:function(){return this.$scopedSlots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope:function(){var s=this,g={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:T({id:this.inputId,disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,role:"combobox","aria-autocomplete":"list","aria-label":this.ariaLabelCombobox,"aria-controls":"vs-".concat(this.uid,"__listbox"),"aria-owns":"vs-".concat(this.uid,"__listbox"),"aria-expanded":this.dropdownOpen.toString(),ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":"vs-".concat(this.uid,"__option-").concat(this.typeAheadPointer)}:{}),events:{compositionstart:function(){return s.isComposing=!0},compositionend:function(){return s.isComposing=!1},keydown:this.onSearchKeyDown,keypress:this.onSearchKeyPress,blur:this.onSearchBlur,focus:this.onSearchFocus,input:function(m){return s.search=m.target.value}}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:g,listFooter:g,header:T({},g,{deselect:this.deselect}),footer:T({},g,{deselect:this.deselect})}},childComponents:function(){return T({},w,{},this.components)},stateClasses:function(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching:function(){return!!this.search},dropdownOpen:function(){return this.dropdownShouldOpen(this)},searchPlaceholder:function(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions:function(){var s=this,g=function(O){return s.limit!==null?O.slice(0,s.limit):O},m=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return g(m);var b=this.search.length?this.filter(m,this.search,this):m;if(this.taggable&&this.search.length)try{var C=this.createOption(this.search);this.optionExists(C)||b.unshift(C)}catch{}return g(b)},isValueEmpty:function(){return this.selectedValue.length===0},showClearButton:function(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options:function(s,g){var m=this;!this.taggable&&(typeof m.resetOnOptionsChange=="function"?m.resetOnOptionsChange(s,g,m.selectedValue):m.resetOnOptionsChange)&&this.clearSelection(),this.value&&this.isTrackingValues&&this.setInternalValueFromOptions(this.value)},value:{immediate:!0,handler:function(s){this.isTrackingValues&&this.setInternalValueFromOptions(s)}},multiple:function(){this.clearSelection()},open:function(s){this.$emit(s?"open":"close")},search:function(s){s.length&&(this.open=!0)}},created:function(){this.mutableLoading=this.loading,this.$on("option:created",this.pushTag)},methods:{setInternalValueFromOptions:function(s){var g=this;Array.isArray(s)?this.$data._value=s.map(function(m){return g.findOptionFromReducedValue(m)}):this.$data._value=this.findOptionFromReducedValue(s)},select:function(s){this.$emit("option:selecting",s),this.isOptionSelected(s)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(s):(this.taggable&&!this.optionExists(s)&&this.$emit("option:created",s),this.multiple&&(s=this.selectedValue.concat(s)),this.updateValue(s),this.$emit("option:selected",s)),this.onAfterSelect(s)},deselect:function(s){var g=this;this.$emit("option:deselecting",s),this.updateValue(this.selectedValue.filter(function(m){return!g.optionComparator(m,s)})),this.$emit("option:deselected",s)},keyboardDeselect:function(s,g){var m,b;this.deselect(s);var C=(m=this.$refs.deselectButtons)===null||m===void 0?void 0:m[g+1],O=(b=this.$refs.deselectButtons)===null||b===void 0?void 0:b[g-1],I=C??O;I?I.focus():this.searchEl.focus()},clearSelection:function(){this.updateValue(this.multiple?[]:null),this.searchEl.focus()},onAfterSelect:function(s){var g=this;this.closeOnSelect&&(this.open=!this.open),this.clearSearchOnSelect&&(this.search=""),this.noDrop&&this.multiple&&this.$nextTick(function(){return g.$refs.search.focus()})},updateValue:function(s){var g=this;this.value===void 0&&(this.$data._value=s),s!==null&&(s=Array.isArray(s)?s.map(function(m){return g.reduce(m)}):this.reduce(s)),this.$emit("input",s)},toggleDropdown:function(s){var g=s.target!==this.searchEl;g&&s.preventDefault();var m=[].concat(o()(this.$refs.deselectButtons||[]),o()([this.$refs.clearButton]));this.searchEl===void 0||m.filter(Boolean).some(function(b){return b.contains(s.target)||b===s.target})?s.preventDefault():this.open&&g?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected:function(s){var g=this;return this.selectedValue.some(function(m){return g.optionComparator(m,s)})},isOptionDeselectable:function(s){return this.isOptionSelected(s)&&this.deselectFromDropdown},hasKeyboardFocusBorder:function(s){return!(!this.keyboardFocusBorder||!this.isKeyboardNavigation)&&s===this.typeAheadPointer},optionComparator:function(s,g){return this.getOptionKey(s)===this.getOptionKey(g)},findOptionFromReducedValue:function(s){var g=this,m=[].concat(o()(this.options),o()(this.pushedTags)).filter(function(b){return JSON.stringify(g.reduce(b))===JSON.stringify(s)});return m.length===1?m[0]:m.find(function(b){return g.optionComparator(b,g.$data._value)})||s},closeSearchOptions:function(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue:function(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){var s=null;this.multiple&&(s=o()(this.selectedValue.slice(0,this.selectedValue.length-1))),this.updateValue(s)}},optionExists:function(s){var g=this;return this.optionList.some(function(m){return g.optionComparator(m,s)})},optionAriaSelected:function(s){return this.selectable(s)?String(this.isOptionSelected(s)):null},normalizeOptionForSlot:function(s){return a()(s)==="object"?s:c()({},this.label,s)},pushTag:function(s){this.pushedTags.push(s)},onEscape:function(){this.search.length?this.search="":this.open=!1},onSearchBlur:function(){if(!this.mousedown||this.searching){var s=this.clearSearchOnSelect,g=this.multiple;return this.clearSearchOnBlur({clearSearchOnSelect:s,multiple:g})&&(this.search=""),void this.closeSearchOptions()}this.mousedown=!1,this.search.length!==0||this.options.length!==0||this.closeSearchOptions()},onSearchFocus:function(){this.open=!0,this.$emit("search:focus")},onMousedown:function(){this.mousedown=!0},onMouseUp:function(){this.mousedown=!1},onMouseMove:function(s,g){this.isKeyboardNavigation=!1,this.selectable(s)&&(this.typeAheadPointer=g)},onSearchKeyDown:function(s){var g=this,m=function(O){if(O.preventDefault(),g.open)return!g.isComposing&&g.typeAheadSelect();g.open=!0},b={8:function(O){return g.maybeDeleteValue()},9:function(O){return g.onTab()},27:function(O){return g.onEscape()},38:function(O){if(O.preventDefault(),g.isKeyboardNavigation=!0,g.open)return g.typeAheadUp();g.open=!0},40:function(O){if(O.preventDefault(),g.isKeyboardNavigation=!0,g.open)return g.typeAheadDown();g.open=!0}};this.selectOnKeyCodes.forEach(function(O){return b[O]=m});var C=this.mapKeydown(b,this);if(typeof C[s.keyCode]=="function")return C[s.keyCode](s)},onSearchKeyPress:function(s){this.open||s.keyCode!==32||(s.preventDefault(),this.open=!0)}}},function(){var s=this,g=s.$createElement,m=s._self._c||g;return m("div",{staticClass:"v-select",class:s.stateClasses,attrs:{id:"v-select-"+s.uid,dir:s.dir}},[s._t("header",null,null,s.scope.header),s._v(" "),m("div",{ref:"toggle",staticClass:"vs__dropdown-toggle"},[m("div",{ref:"selectedOptions",staticClass:"vs__selected-options",on:{mousedown:s.toggleDropdown}},[s._l(s.selectedValue,function(b,C){return s._t("selected-option-container",[m("span",{key:s.getOptionKey(b),staticClass:"vs__selected"},[s._t("selected-option",[s._v(` - `+s._s(s.getOptionLabel(b))+` - `)],null,s.normalizeOptionForSlot(b)),s._v(" "),s.multiple?m("button",{ref:"deselectButtons",refInFor:!0,staticClass:"vs__deselect",attrs:{disabled:s.disabled,type:"button",title:s.ariaLabelDeselectOption(s.getOptionLabel(b)),"aria-label":s.ariaLabelDeselectOption(s.getOptionLabel(b))},on:{mousedown:function(O){return O.stopPropagation(),s.deselect(b)},keydown:function(O){return!O.type.indexOf("key")&&s._k(O.keyCode,"enter",13,O.key,"Enter")?null:s.keyboardDeselect(b,C)}}},[m(s.childComponents.Deselect,{tag:"component"})],1):s._e()],2)],{option:s.normalizeOptionForSlot(b),deselect:s.deselect,multiple:s.multiple,disabled:s.disabled})}),s._v(" "),s._t("search",[m("input",s._g(s._b({staticClass:"vs__search"},"input",s.scope.search.attributes,!1),s.scope.search.events))],null,s.scope.search)],2),s._v(" "),m("div",{ref:"actions",staticClass:"vs__actions"},[m("button",{directives:[{name:"show",rawName:"v-show",value:s.showClearButton,expression:"showClearButton"}],ref:"clearButton",staticClass:"vs__clear",attrs:{disabled:s.disabled,type:"button",title:s.ariaLabelClearSelected,"aria-label":s.ariaLabelClearSelected},on:{click:s.clearSelection}},[m(s.childComponents.Deselect,{tag:"component"})],1),s._v(" "),s.noDrop?s._e():m("button",{ref:"openIndicatorButton",staticClass:"vs__open-indicator-button",attrs:{type:"button",tabindex:"-1","aria-labelledby":"vs-"+s.uid+"__listbox","aria-controls":"vs-"+s.uid+"__listbox","aria-expanded":s.dropdownOpen.toString()},on:{mousedown:s.toggleDropdown}},[s._t("open-indicator",[m(s.childComponents.OpenIndicator,s._b({tag:"component"},"component",s.scope.openIndicator.attributes,!1))],null,s.scope.openIndicator)],2),s._v(" "),s._t("spinner",[m("div",{directives:[{name:"show",rawName:"v-show",value:s.mutableLoading,expression:"mutableLoading"}],staticClass:"vs__spinner"},[s._v("Loading...")])],null,s.scope.spinner)],2)]),s._v(" "),m("transition",{attrs:{name:s.transition}},[s.dropdownOpen?m("ul",{directives:[{name:"append-to-body",rawName:"v-append-to-body"}],key:"vs-"+s.uid+"__listbox",ref:"dropdownMenu",staticClass:"vs__dropdown-menu",attrs:{id:"vs-"+s.uid+"__listbox",role:"listbox","aria-label":s.ariaLabelListbox,"aria-multiselectable":s.multiple,tabindex:"-1"},on:{mousedown:function(b){return b.preventDefault(),s.onMousedown(b)},mouseup:s.onMouseUp}},[s._t("list-header",null,null,s.scope.listHeader),s._v(" "),s._l(s.filteredOptions,function(b,C){return m("li",{key:s.getOptionKey(b),staticClass:"vs__dropdown-option",class:{"vs__dropdown-option--deselect":s.isOptionDeselectable(b)&&C===s.typeAheadPointer,"vs__dropdown-option--selected":s.isOptionSelected(b),"vs__dropdown-option--highlight":C===s.typeAheadPointer,"vs__dropdown-option--kb-focus":s.hasKeyboardFocusBorder(C),"vs__dropdown-option--disabled":!s.selectable(b)},attrs:{id:"vs-"+s.uid+"__option-"+C,role:"option","aria-selected":s.optionAriaSelected(b)},on:{mousemove:function(O){return s.onMouseMove(b,C)},click:function(O){O.preventDefault(),O.stopPropagation(),s.selectable(b)&&s.select(b)}}},[s._t("option",[s._v(` - `+s._s(s.getOptionLabel(b))+` - `)],null,s.normalizeOptionForSlot(b))],2)}),s._v(" "),s.filteredOptions.length===0?m("li",{staticClass:"vs__no-options"},[s._t("no-options",[s._v(` - Sorry, no matching options. - `)],null,s.scope.noOptions)],2):s._e(),s._v(" "),s._t("list-footer",null,null,s.scope.listFooter)],2):m("ul",{staticStyle:{display:"none",visibility:"hidden"},attrs:{id:"vs-"+s.uid+"__listbox",role:"listbox","aria-label":s.ariaLabelListbox}})]),s._v(" "),s._t("footer",null,null,s.scope.footer)],2)},[]).exports,W={ajax:v,pointer:d,pointerScroll:p},k=$})(),u})()})}(Ut)),Ut.exports}var X=vs();const ys={name:"ChevronDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var bs=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon chevron-down-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},ws=[],xs=j(ys,bs,ws,!1,null,null);const Ss=xs.exports;var _s=Object.defineProperty,Cs=Object.defineProperties,Os=Object.getOwnPropertyDescriptors,ie=Object.getOwnPropertySymbols,Ls=Object.prototype.hasOwnProperty,As=Object.prototype.propertyIsEnumerable,oe=(t,e,n)=>e in t?_s(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Ts=(t,e)=>{for(var n in e||(e={}))Ls.call(e,n)&&oe(t,n,e[n]);if(ie)for(var n of ie(e))As.call(e,n)&&oe(t,n,e[n]);return t},ks=(t,e)=>Cs(t,Os(e));function $e(t,e){const n=[];let i=0,r=t.toLowerCase().indexOf(e.toLowerCase(),i),u=0;for(;r>-1&&u[]}},computed:{ranges(){let t=[];return!this.search&&this.highlight.length===0||(this.highlight.length>0?t=this.highlight:t=$e(this.text,this.search),t.forEach((e,n)=>{e.end(n.start0&&e.push({start:n.start<0?0:n.start,end:n.end>this.text.length?this.text.length:n.end}),e),[]),t.sort((e,n)=>e.start-n.start),t=t.reduce((e,n)=>{if(!e.length)e.push(n);else{const i=e.length-1;e[i].end>=n.start?e[i]={start:e[i].start,end:Math.max(e[i].end,n.end)}:e.push(n)}return e},[])),t},chunks(){if(this.ranges.length===0)return[{start:0,end:this.text.length,highlight:!1,text:this.text}];const t=[];let e=0,n=0;for(;e=this.ranges.length&&ee.highlight?t("strong",{},e.text):e.text)):t("span",{},this.text)}},Bs=null,Is=null;var Ns=j(Ds,Bs,Is,!1,null,null);const Re=Ns.exports,Ps={name:"NcEllipsisedOption",components:{NcHighlight:Re},props:{name:{type:String,default:""},search:{type:String,default:""}},computed:{needsTruncate(){return this.name&&this.name.length>=10},split(){return this.name.length-Math.min(Math.floor(this.name.length/2),10)},part1(){return this.needsTruncate?this.name.slice(0,this.split):this.name},part2(){return this.needsTruncate?this.name.slice(this.split):""},highlight1(){return this.search?$e(this.name,this.search):[]},highlight2(){return this.highlight1.map(t=>({start:t.start-this.split,end:t.end-this.split}))}}};var Ms=function(){var t=this,e=t._self._c;return e("span",{staticClass:"name-parts",attrs:{dir:"auto",title:t.name}},[e("NcHighlight",{staticClass:"name-parts__first",attrs:{text:t.part1,search:t.search,highlight:t.highlight1}}),t.part2?e("NcHighlight",{staticClass:"name-parts__last",attrs:{text:t.part2,search:t.search,highlight:t.highlight2}}):t._e()],1)},Es=[],Us=j(Ps,Ms,Es,!1,null,"592b8444");const Fs=Us.exports,He=vt(We());window.addEventListener("resize",()=>{He.value=We()});function We(){return window.outerHeight===window.screen.height}Ce(He);var Ft={exports:{}},Vs=Ft.exports,re;function js(){return re||(re=1,function(t){(function(e){if(typeof n!="function"){var n=function(v){return v};n.nonNative=!0}const i=n("plaintext"),r=n("html"),u=n("comment"),h=/<(\w*)>/g,o=/<\/?([^\s\/>]+)/;function f(v,y,w){v=v||"",y=y||[],w=w||"";let x=l(y,w);return c(v,x)}function a(v,y){v=v||[],y=y||"";let w=l(v,y);return function(x){return c(x||"",w)}}f.init_streaming_mode=a;function l(v,y){return v=p(v),{allowable_tags:v,tag_replacement:y,state:i,tag_buffer:"",depth:0,in_quote_char:""}}function c(v,y){if(typeof v!="string")throw new TypeError("'html' parameter must be a string");let w=y.allowable_tags,x=y.tag_replacement,_=y.state,S=y.tag_buffer,A=y.depth,L=y.in_quote_char,T="";for(let $=0,W=v.length;$":if(L)break;if(A){A--;break}L="",_=i,S+=">",w.has(d(S))?T+=S:T+=x,S="";break;case'"':case"'":k===L?L="":L=L||k,S+=k;break;case"-":S==="":S.slice(-2)=="--"&&(_=i),S="";break;default:S+=k;break}}return y.state=_,y.tag_buffer=S,y.depth=A,y.in_quote_char=L,T}function p(v){let y=new Set;if(typeof v=="string"){let w;for(;w=h.exec(v);)y.add(w[1])}else!n.nonNative&&typeof v[n.iterator]=="function"?y=new Set(v):typeof v.forEach=="function"&&v.forEach(y.add,y);return y}function d(v){let y=o.exec(v);return y?y[1].toLowerCase():null}t.exports?t.exports=f:e.striptags=f})(Vs)}(Ft)),Ft.exports}js();function mt(t=document.body){const e=window.getComputedStyle(t).getPropertyValue("--background-invert-if-dark");return e!==void 0?e==="invert(100%)":!1}mt();const qs=Symbol.for("nc:theme:enforced");function zs(t){const e=Vt(()=>{var u;return(u=J(t))!=null?u:document.body}),n=vt(mt(e.value)),i=tn();function r(){n.value=mt(e.value)}return en(e,r,{attributes:!0}),it(e,r),it(i,r,{immediate:!0}),Ce(n)}const $s=Je(()=>zs());function Rs(){const t=$s(),e=Qe(qs,void 0);return Vt(()=>e?.value?e.value==="dark":t.value)}Bt.util.warn;function st(t){var e;const n=J(t);return(e=n?.$el)!=null?e:n}const Xe=nn?window:void 0;function ut(...t){let e,n,i,r;if(typeof t[0]=="string"||Array.isArray(t[0])?([n,i,r]=t,e=Xe):[e,n,i,r]=t,!e)return ct;Array.isArray(n)||(n=[n]),Array.isArray(i)||(i=[i]);const u=[],h=()=>{u.forEach(l=>l()),u.length=0},o=(l,c,p,d)=>(l.addEventListener(c,p,d),()=>l.removeEventListener(c,p,d)),f=it(()=>[st(e),J(r)],([l,c])=>{if(h(),!l)return;const p=sn(c)?{...c}:c;u.push(...n.flatMap(d=>i.map(v=>o(l,d,v,p))))},{immediate:!0,flush:"post"}),a=()=>{f(),h()};return Oe(a),a}let ae=!1;function le(t,e,n={}){const{window:i=Xe,ignore:r=[],capture:u=!0,detectIframe:h=!1}=n;if(!i)return ct;It&&!ae&&(ae=!0,Array.from(i.document.body.children).forEach(l=>l.addEventListener("click",ct)),i.document.documentElement.addEventListener("click",ct));let o=!0;const f=l=>r.some(c=>{if(typeof c=="string")return Array.from(i.document.querySelectorAll(c)).some(p=>p===l.target||l.composedPath().includes(p));{const p=st(c);return p&&(l.target===p||l.composedPath().includes(p))}}),a=[ut(i,"click",l=>{const c=st(t);if(!(!c||c===l.target||l.composedPath().includes(c))){if(l.detail===0&&(o=!f(l)),!o){o=!0;return}e(l)}},{passive:!0,capture:u}),ut(i,"pointerdown",l=>{const c=st(t);o=!f(l)&&!!(c&&!l.composedPath().includes(c))},{passive:!0}),h&&ut(i,"blur",l=>{setTimeout(()=>{var c;const p=st(t);((c=i.document.activeElement)==null?void 0:c.tagName)==="IFRAME"&&!p?.contains(i.document.activeElement)&&e(l)},0)})].filter(Boolean);return()=>a.forEach(l=>l())}const Hs={[Wt.mounted](t,e){const n=!e.modifiers.bubble;if(typeof e.value=="function")t.__onClickOutside_stop=le(t,e.value,{capture:n});else{const[i,r]=e.value;t.__onClickOutside_stop=le(t,i,Object.assign({capture:n},r))}},[Wt.unmounted](t){t.__onClickOutside_stop()}};function At(t){return typeof Window<"u"&&t instanceof Window?t.document.documentElement:typeof Document<"u"&&t instanceof Document?t.documentElement:t}function Ke(t){const e=window.getComputedStyle(t);if(e.overflowX==="scroll"||e.overflowY==="scroll"||e.overflowX==="auto"&&t.clientWidth1?!0:(e.preventDefault&&e.preventDefault(),!1)}const Tt=new WeakMap;function Xs(t,e=!1){const n=vt(e);let i=null,r="";it(on(t),o=>{const f=At(J(o));if(f){const a=f;if(Tt.get(a)||Tt.set(a,a.style.overflow),a.style.overflow!=="hidden"&&(r=a.style.overflow),a.style.overflow==="hidden")return n.value=!0;if(n.value)return a.style.overflow="hidden"}},{immediate:!0});const u=()=>{const o=At(J(t));!o||n.value||(It&&(i=ut(o,"touchmove",f=>{Ws(f)},{passive:!1})),o.style.overflow="hidden",n.value=!0)},h=()=>{const o=At(J(t));!o||!n.value||(It&&i?.(),o.style.overflow=r,Tt.delete(o),n.value=!1)};return Oe(h),Vt({get(){return n.value},set(o){o?u():h()}})}function Ks(){let t=!1;const e=vt(!1);return(n,i)=>{if(e.value=i.value,t)return;t=!0;const r=Xs(n,i.value);it(e,u=>r.value=u)}}Ks();function Gs(t,e){const n=(l,c)=>l.startsWith(c)?l.slice(c.length):l,i=(l,...c)=>c.reduce((p,d)=>n(p,d),l);if(!t)return null;const r=/^https?:\/\//.test(e),u=/^[a-z][a-z0-9+.-]*:.+/.test(e);if(!r&&u||r&&!e.startsWith(Xt())||!r&&!e.startsWith("/"))return null;const h=r?i(e,Xt(),"/index.php"):e,o=i(t.history.base,rn(),"/index.php"),f=i(h,o)||"/",a=t.resolve(f).route;return a.matched.length?a.fullPath:null}function Zs(t){return window._nc_contacts_menu_hooks?Object.values(window._nc_contacts_menu_hooks).filter(e=>e.enabled(t)):[]}var ce={exports:{}},ue={exports:{}},he;function Ys(){return he||(he=1,function(){var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e={rotl:function(n,i){return n<>>32-i},rotr:function(n,i){return n<<32-i|n>>>i},endian:function(n){if(n.constructor==Number)return e.rotl(n,8)&16711935|e.rotl(n,24)&4278255360;for(var i=0;i0;n--)i.push(Math.floor(Math.random()*256));return i},bytesToWords:function(n){for(var i=[],r=0,u=0;r>>5]|=n[r]<<24-u%32;return i},wordsToBytes:function(n){for(var i=[],r=0;r>>5]>>>24-r%32&255);return i},bytesToHex:function(n){for(var i=[],r=0;r>>4).toString(16)),i.push((n[r]&15).toString(16));return i.join("")},hexToBytes:function(n){for(var i=[],r=0;r>>6*(3-h)&63)):i.push("=");return i.join("")},base64ToBytes:function(n){n=n.replace(/[^A-Z0-9+\/]/ig,"");for(var i=[],r=0,u=0;r>>6-u*2);return i}};ue.exports=e}()),ue.exports}var kt,pe;function de(){if(pe)return kt;pe=1;var t={utf8:{stringToBytes:function(e){return t.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(t.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var n=[],i=0;i>>24)&16711935|(o[d]<<24|o[d]>>>8)&4278255360;o[f>>>5]|=128<>>9<<4)+14]=f;for(var v=r._ff,y=r._gg,w=r._hh,x=r._ii,d=0;d>>0,l=l+S>>>0,c=c+A>>>0,p=p+L>>>0}return t.endian([a,l,c,p])};r._ff=function(u,h,o,f,a,l,c){var p=u+(h&o|~h&f)+(a>>>0)+c;return(p<>>32-l)+h},r._gg=function(u,h,o,f,a,l,c){var p=u+(h&f|o&~f)+(a>>>0)+c;return(p<>>32-l)+h},r._hh=function(u,h,o,f,a,l,c){var p=u+(h^o^f)+(a>>>0)+c;return(p<>>32-l)+h},r._ii=function(u,h,o,f,a,l,c){var p=u+(o^(h|~f))+(a>>>0)+c;return(p<>>32-l)+h},r._blocksize=16,r._digestsize=16,ce.exports=function(u,h){if(u==null)throw new Error("Illegal argument "+u);var o=t.wordsToBytes(r(u,h));return h&&h.asBytes?o:h&&h.asString?i.bytesToString(o):t.bytesToHex(o)}}()),ce.exports}var ti=Qs();const ei=an(ti);function me(t){let e=t.toLowerCase();e.match(/^([0-9a-f]{4}-?){8}$/)===null&&(e=ei(e)),e=e.replace(/[^0-9a-f]/g,"");const n=6,i=wn(n);function r(u,h){let o=0;const f=[];for(let a=0;a - - - - -`,si=` - - - -`,ii=` - - - -`,oi=` - - - - - -`,ri=` - - - -`,ye=` - - - - -`,be=` - - - -`,ai=` - - - -`,li=` - - - -`;ht(ln),ht(cn);function Ge(t){switch(t){case"away":return B("away");case"busy":return B("busy");case"dnd":return B("do not disturb");case"online":return B("online");case"invisible":return B("invisible");case"offline":return B("offline");default:return t}}const ci={online:Y?ai:li,away:Y?ve:si,busy:Y?ve:ii,dnd:Y?oi:ri,invisible:Y?ye:be,offline:Y?ye:be},ui={name:"NcUserStatusIcon",props:{user:{type:String,default:null},status:{type:String,default:null,validator:t=>["online","away","busy","dnd","invisible","offline"].includes(t)},ariaHidden:{type:String,default:null,validator:t=>["true","false"].includes(t)}},data(){return{fetchedUserStatus:null}},computed:{activeStatus(){var t;return(t=this.status)!=null?t:this.fetchedUserStatus},activeSvg(){var t;return(t=ci[this.activeStatus])!=null?t:null},ariaLabel(){return this.ariaHidden==="true"?null:B("User status: {status}",{status:Ge(this.activeStatus)})}},watch:{user:{immediate:!0,async handler(t){var e,n,i,r;if(!t||!((n=(e=De())==null?void 0:e.user_status)!=null&&n.enabled)){this.fetchedUserStatus=null;return}try{const{data:u}=await jt.get(Ae("/apps/user_status/api/v1/statuses/{user}",{user:t}));this.fetchedUserStatus=(r=(i=u.ocs)==null?void 0:i.data)==null?void 0:r.status}catch{this.fetchedUserStatus=null}}}}};var hi=function(){var t=this,e=t._self._c;return t.activeStatus?e("span",{staticClass:"user-status-icon",class:{"user-status-icon--invisible":["invisible","offline"].includes(t.status)},attrs:{role:"img","aria-hidden":t.ariaHidden,"aria-label":t.ariaLabel},domProps:{innerHTML:t._s(t.activeSvg)}}):t._e()},pi=[],di=j(ui,hi,pi,!1,null,"86b73d39");const fi=di.exports,gi={name:"NcActionLink",mixins:[qt],inject:{isInSemanticMenu:{from:"NcActions:isSemanticMenu",default:!1}},props:{href:{type:String,required:!0,validator:t=>{try{return new URL(t)}catch{return t.startsWith("#")||t.startsWith("/")}}},download:{type:String,default:null},target:{type:String,default:"_self",validator:t=>t&&(!t.startsWith("_")||["_blank","_self","_parent","_top"].indexOf(t)>-1)},title:{type:String,default:null},ariaHidden:{type:Boolean,default:null}}};var mi=function(){var t=this,e=t._self._c;return e("li",{staticClass:"action",attrs:{role:t.isInSemanticMenu&&"presentation"}},[e("a",{staticClass:"action-link focusable",attrs:{download:t.download,href:t.href,"aria-label":t.ariaLabel,target:t.target,title:t.title,rel:"nofollow noreferrer noopener",role:t.isInSemanticMenu&&"menuitem"},on:{click:t.onClick}},[t._t("icon",function(){return[e("span",{staticClass:"action-link__icon",class:[t.isIconUrl?"action-link__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url(".concat(t.icon,")"):null},attrs:{"aria-hidden":"true"}})]}),t.name?e("span",{staticClass:"action-link__longtext-wrapper"},[e("strong",{staticClass:"action-link__name"},[t._v(" "+t._s(t.name)+" ")]),e("br"),e("span",{staticClass:"action-link__longtext",domProps:{textContent:t._s(t.text)}})]):t.isLongText?e("span",{staticClass:"action-link__longtext",domProps:{textContent:t._s(t.text)}}):e("span",{staticClass:"action-link__text"},[t._v(t._s(t.text))]),t._e()],2)])},vi=[],yi=j(gi,mi,vi,!1,null,"0dc8b2f3");const bi=yi.exports,wi={name:"NcActionRouter",mixins:[qt],inject:{isInSemanticMenu:{from:"NcActions:isSemanticMenu",default:!1}},props:{to:{type:[String,Object],required:!0},exact:{type:Boolean,default:!1}}};var xi=function(){var t=this,e=t._self._c;return e("li",{staticClass:"action",attrs:{role:t.isInSemanticMenu&&"presentation"}},[e("RouterLink",{staticClass:"action-router focusable",attrs:{to:t.to,"aria-label":t.ariaLabel,exact:t.exact,title:t.title,rel:"nofollow noreferrer noopener",role:t.isInSemanticMenu&&"menuitem"},nativeOn:{click:function(n){return t.onClick.apply(null,arguments)}}},[t._t("icon",function(){return[e("span",{staticClass:"action-router__icon",class:[t.isIconUrl?"action-router__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url(".concat(t.icon,")"):null},attrs:{"aria-hidden":"true"}})]}),t.name?e("span",{staticClass:"action-router__longtext-wrapper"},[e("strong",{staticClass:"action-router__name"},[t._v(" "+t._s(t.name)+" ")]),e("br"),e("span",{staticClass:"action-router__longtext",domProps:{textContent:t._s(t.text)}})]):t.isLongText?e("span",{staticClass:"action-router__longtext",domProps:{textContent:t._s(t.text)}}):e("span",{staticClass:"action-router__text"},[t._v(t._s(t.text))]),t._e()],2)],1)},Si=[],_i=j(wi,xi,Si,!1,null,"bce2dceb");const Ci=_i.exports,Oi={name:"NcActionText",mixins:[qt],inject:{isInSemanticMenu:{from:"NcActions:isSemanticMenu",default:!1}}};var Li=function(){var t=this,e=t._self._c;return e("li",{staticClass:"action",attrs:{role:t.isInSemanticMenu&&"presentation"}},[e("span",{staticClass:"action-text",on:{click:t.onClick}},[t._t("icon",function(){return[t.icon!==""?e("span",{staticClass:"action-text__icon",class:[t.isIconUrl?"action-text__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url(".concat(t.icon,")"):null},attrs:{"aria-hidden":"true"}}):t._e()]}),t.name?e("span",{staticClass:"action-text__longtext-wrapper"},[e("strong",{staticClass:"action-text__name"},[t._v(" "+t._s(t.name)+" ")]),e("span",{staticClass:"action-text__longtext",domProps:{textContent:t._s(t.text)}})]):t.isLongText?e("span",{staticClass:"action-text__longtext",domProps:{textContent:t._s(t.text)}}):e("span",{staticClass:"action-text__text"},[t._v(t._s(t.text))]),t._e()],2)])},Ai=[],Ti=j(Oi,Li,Ai,!1,null,"6cafaa97");const ki=Ti.exports;ht(gn);const Ze={data(){return{hasStatus:!1,userStatus:{status:null,message:null,icon:null}}},methods:{async fetchUserStatus(t){var e,n;if(!t)return;const i=De();if(!(!Object.hasOwn(i,"user_status")||!i.user_status.enabled)&&Nt())try{const{data:r}=await jt.get(Ae("apps/user_status/api/v1/statuses/{userId}",{userId:t})),{status:u,message:h,icon:o}=r.ocs.data;this.userStatus.status=u,this.userStatus.message=h||"",this.userStatus.icon=o||"",this.hasStatus=!0}catch(r){if(r.response.status===404&&((n=(e=r.response.data.ocs)==null?void 0:e.data)==null?void 0:n.length)===0)return;Pt.error("Could not fetch user status",{error:r})}}}},Ye=fn.getBuilder("nextcloud").persist().build();function Di(t){const e=Ye.getItem("user-has-avatar."+t);return typeof e=="string"?!!e:null}function we(t,e){t&&Ye.setItem("user-has-avatar."+t,e)}const Bi={name:"NcAvatar",directives:{ClickOutside:Hs},components:{IconDotsHorizontal:pn,NcActions:hn,NcButton:un,NcIconSvgWrapper:ke,NcLoadingIcon:Te,NcUserStatusIcon:fi},mixins:[Ze],props:{url:{type:String,default:void 0},iconClass:{type:String,default:void 0},user:{type:String,default:void 0},hideStatus:{type:Boolean,default:!1},showUserStatus:{type:Boolean,default:!0},verboseStatus:{type:Boolean,default:!1},showUserStatusCompact:{type:Boolean,default:!0},preloadedUserStatus:{type:Object,default:void 0},isGuest:{type:Boolean,default:!1},displayName:{type:String,default:void 0},size:{type:Number,default:32},noPlaceholder:{type:Boolean,default:!1},allowPlaceholder:{type:Boolean,default:!0},disableTooltip:{type:Boolean,default:!1},disableMenu:{type:Boolean,default:!1},tooltipMessage:{type:String,default:null},isNoUser:{type:Boolean,default:!1},menuContainer:{type:[Boolean,String,Object,Element],default:"body"}},setup(){return{isDarkTheme:Rs()}},data(){return{avatarUrlLoaded:null,avatarSrcSetLoaded:null,userDoesNotExist:!1,isAvatarLoaded:!1,isMenuLoaded:!1,contactsMenuLoading:!1,contactsMenuData:{},contactsMenuActions:[],contactsMenuOpenState:!1}},computed:{avatarAriaLabel(){var t,e;if(this.hasMenu)return this.canDisplayUserStatus||this.showUserStatusIconOnAvatar?B("Avatar of {displayName}, {status}",{displayName:(t=this.displayName)!=null?t:this.user,status:Ge(this.userStatus.status)}):B("Avatar of {displayName}",{displayName:(e=this.displayName)!=null?e:this.user})},canDisplayUserStatus(){return!this.hideStatus&&this.showUserStatus&&this.hasStatus&&["online","away","busy","dnd"].includes(this.userStatus.status)},showUserStatusIconOnAvatar(){return!this.hideStatus&&this.showUserStatus&&!this.verboseStatus&&this.showUserStatusCompact&&this.hasStatus&&this.userStatus.status!=="dnd"&&this.userStatus.icon},userIdentifier(){return this.isDisplayNameDefined?this.displayName:this.isUserDefined?this.user:""},isUserDefined(){return typeof this.user<"u"},isDisplayNameDefined(){return typeof this.displayName<"u"},isUrlDefined(){return typeof this.url<"u"},hasMenu(){var t;return this.disableMenu?!1:this.isMenuLoaded?this.menu.length>0:!(this.user===((t=Nt())==null?void 0:t.uid)||this.userDoesNotExist||this.url)},showInitials(){return!this.noPlaceholder&&this.allowPlaceholder&&this.userDoesNotExist&&!(this.iconClass||this.$slots.icon)},avatarStyle(){return{"--avatar-size":this.size+"px",lineHeight:this.showInitials?this.size+"px":0,fontSize:Math.round(this.size*.45)+"px"}},initialsWrapperStyle(){const{r:t,g:e,b:n}=me(this.userIdentifier);return{backgroundColor:"rgba(".concat(t,", ").concat(e,", ").concat(n,", 0.1)")}},initialsStyle(){const{r:t,g:e,b:n}=me(this.userIdentifier);return{color:"rgb(".concat(t,", ").concat(e,", ").concat(n,")")}},tooltip(){return this.disableTooltip?!1:this.tooltipMessage?this.tooltipMessage:this.displayName},initials(){let t="?";if(this.showInitials){const e=this.userIdentifier.trim();if(e==="")return t;const n=e.match(new RegExp("[\\p{L}\\p{N}\\s]","gu"));if(!n)return t;const i=n.join(""),r=i.lastIndexOf(" ");t=String.fromCodePoint(i.codePointAt(0)),r!==-1&&(t=t.concat(String.fromCodePoint(i.codePointAt(r+1))))}return t.toLocaleUpperCase()},menu(){const t=this.contactsMenuActions.map(n=>{const i=Gs(this.$router,n.hyperlink);return{ncActionComponent:i?Ci:bi,ncActionComponentProps:i?{to:i,icon:n.icon}:{href:n.hyperlink,icon:n.icon},text:n.title}});for(const n of Zs(this.contactsMenuData))try{t.push({ncActionComponent:dn,ncActionComponentProps:{},ncActionComponentHandlers:{click:()=>n.callback(this.contactsMenuData)},text:n.displayName(this.contactsMenuData),iconSvg:n.iconSvg(this.contactsMenuData)})}catch(i){Pt.error("Failed to render ContactsMenu action ".concat(n.id),{error:i,action:n})}function e(n){const i=document.createTextNode(n),r=document.createElement("p");return r.appendChild(i),r.innerHTML}if(!this.hideStatus&&this.showUserStatus&&(this.userStatus.icon||this.userStatus.message)){const n=` - `.concat(e(this.userStatus.icon),` - `);return[{ncActionComponent:ki,ncActionComponentProps:{},iconSvg:this.userStatus.icon?n:void 0,text:"".concat(this.userStatus.message)}].concat(t)}return t}},watch:{url(){this.userDoesNotExist=!1,this.loadAvatarUrl()},user(){this.userDoesNotExist=!1,this.isMenuLoaded=!1,this.loadAvatarUrl()}},mounted(){this.loadAvatarUrl(),Ot("settings:avatar:updated",this.loadAvatarUrl),Ot("settings:display-name:updated",this.loadAvatarUrl),!this.hideStatus&&this.showUserStatus&&this.user&&!this.isNoUser&&(this.preloadedUserStatus?(this.userStatus.status=this.preloadedUserStatus.status||"",this.userStatus.message=this.preloadedUserStatus.message||"",this.userStatus.icon=this.preloadedUserStatus.icon||"",this.hasStatus=this.preloadedUserStatus.status!==null):this.fetchUserStatus(this.user),Ot("user_status:status.updated",this.handleUserStatusUpdated))},beforeDestroy(){Ct("settings:avatar:updated",this.loadAvatarUrl),Ct("settings:display-name:updated",this.loadAvatarUrl),Ct("user_status:status.updated",this.handleUserStatusUpdated)},methods:{t:B,handleUserStatusUpdated(t){this.user===t.userId&&(this.userStatus={status:t.status,icon:t.icon,message:t.message},this.hasStatus=t.status!==null)},async toggleMenu(t){t.type==="keydown"&&t.key!=="Enter"||(this.contactsMenuOpenState||await this.fetchContactsMenu(),this.contactsMenuOpenState=!this.contactsMenuOpenState)},closeMenu(){this.contactsMenuOpenState=!1},async fetchContactsMenu(){this.contactsMenuLoading=!0;try{const t=encodeURIComponent(this.user),{data:e}=await jt.post(Le("contactsmenu/findOne"),"shareType=0&shareWith=".concat(t));this.contactsMenuData=e,this.contactsMenuActions=e.topAction?[e.topAction].concat(e.actions):e.actions}catch{this.contactsMenuOpenState=!1}this.contactsMenuLoading=!1,this.isMenuLoaded=!0},loadAvatarUrl(){if(this.isAvatarLoaded=!1,!this.isUrlDefined&&(!this.isUserDefined||this.isNoUser||this.iconClass)){this.isAvatarLoaded=!0,this.userDoesNotExist=!0;return}if(this.isUrlDefined){this.updateImageIfValid(this.url);return}if(this.size<=64){const t=this.avatarUrlGenerator(this.user,64),e=[t+" 1x",this.avatarUrlGenerator(this.user,512)+" 8x"].join(", ");this.updateImageIfValid(t,e)}else{const t=this.avatarUrlGenerator(this.user,512);this.updateImageIfValid(t)}},avatarUrlGenerator(t,e){var n;let i=ni(t,{size:e,isDarkTheme:this.isDarkTheme,isGuest:this.isGuest});return t===((n=Nt())==null?void 0:n.uid)&&typeof window.oc_userconfig<"u"&&(i+="?v="+window.oc_userconfig.avatar.version),i},updateImageIfValid(t,e=null){const n=Di(this.user);if(this.isUserDefined&&typeof n=="boolean"){this.isAvatarLoaded=!0,this.avatarUrlLoaded=t,e&&(this.avatarSrcSetLoaded=e),n===!1&&(this.userDoesNotExist=!0);return}const i=new Image;i.onload=()=>{this.avatarUrlLoaded=t,e&&(this.avatarSrcSetLoaded=e),this.isAvatarLoaded=!0,we(this.user,!0)},i.onerror=r=>{Pt.debug("Invalid avatar url",{error:r,url:t}),this.avatarUrlLoaded=null,this.avatarSrcSetLoaded=null,this.userDoesNotExist=!0,this.isAvatarLoaded=!1,we(this.user,!1)},e&&(i.srcset=e),i.src=t}}};var Ii=function(){var t=this,e=t._self._c;return e("span",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.closeMenu,expression:"closeMenu"}],staticClass:"avatardiv popovermenu-wrapper",class:{"avatardiv--unknown":t.userDoesNotExist,"avatardiv--with-menu":t.hasMenu,"avatardiv--with-menu-loading":t.contactsMenuLoading},style:t.avatarStyle,attrs:{title:t.tooltip}},[t._t("icon",function(){return[t.iconClass?e("span",{staticClass:"avatar-class-icon",class:t.iconClass}):t.isAvatarLoaded&&!t.userDoesNotExist?e("img",{attrs:{src:t.avatarUrlLoaded,srcset:t.avatarSrcSetLoaded,alt:""}}):t._e()]}),t.hasMenu&&t.menu.length===0?e("NcButton",{staticClass:"action-item action-item__menutoggle",attrs:{"aria-label":t.avatarAriaLabel,variant:"tertiary-no-background"},on:{click:t.toggleMenu},scopedSlots:t._u([{key:"icon",fn:function(){return[t.contactsMenuLoading?e("NcLoadingIcon"):e("IconDotsHorizontal",{attrs:{size:20}})]},proxy:!0}],null,!1,1269954734)}):t.hasMenu?e("NcActions",{attrs:{"aria-label":t.avatarAriaLabel,container:t.menuContainer,"force-menu":"","manual-open":"",open:t.contactsMenuOpenState,variant:"tertiary-no-background"},on:{"update:open":function(n){t.contactsMenuOpenState=n},click:t.toggleMenu},scopedSlots:t._u([t.contactsMenuLoading?{key:"icon",fn:function(){return[e("NcLoadingIcon")]},proxy:!0}:null],null,!0)},t._l(t.menu,function(n,i){return e(n.ncActionComponent,t._g(t._b({key:i,tag:"component",scopedSlots:t._u([n.iconSvg?{key:"icon",fn:function(){return[e("NcIconSvgWrapper",{attrs:{svg:n.iconSvg}})]},proxy:!0}:null],null,!0)},"component",n.ncActionComponentProps,!1),n.ncActionComponentHandlers),[t._v(" "+t._s(n.text)+" ")])}),1):t._e(),t.showUserStatusIconOnAvatar?e("span",{staticClass:"avatardiv__user-status avatardiv__user-status--icon"},[t._v(" "+t._s(t.userStatus.icon)+" ")]):t.canDisplayUserStatus?e("NcUserStatusIcon",{staticClass:"avatardiv__user-status",attrs:{status:t.userStatus.status,"aria-hidden":String(t.hasMenu)}}):t._e(),t.showInitials?e("span",{staticClass:"avatardiv__initials-wrapper",style:t.initialsWrapperStyle},[e("span",{staticClass:"avatardiv__initials",style:t.initialsStyle},[t._v(" "+t._s(t.initials)+" ")])]):t._e()],2)},Ni=[],Pi=j(Bi,Ii,Ni,!1,null,"936fbce2");const Mi=Pi.exports,Ei=8,xe=32,Ui={name:"NcListItemIcon",components:{NcAvatar:Mi,NcHighlight:Re,NcIconSvgWrapper:ke},mixins:[Ze],props:{name:{type:String,required:!0},subname:{type:String,default:""},icon:{type:String,default:""},iconSvg:{type:String,default:""},iconName:{type:String,default:""},search:{type:String,default:""},avatarSize:{type:Number,default:xe},noMargin:{type:Boolean,default:!1},displayName:{type:String,default:null},isNoUser:{type:Boolean,default:!1},id:{type:String,default:null}},setup(){return{margin:Ei,defaultSize:xe}},computed:{hasIcon(){return this.icon!==""},hasIconSvg(){return this.iconSvg!==""},isValidSubname(){var t,e;return((e=(t=this.subname)==null?void 0:t.trim)==null?void 0:e.call(t))!==""},isSizeBigEnough(){return this.avatarSize>=26},cssVars(){const t=this.noMargin?0:this.margin;return{"--height":this.avatarSize+2*t+"px","--margin":this.margin+"px"}},searchParts(){const t=/^([^<]*)<([^>]+)>?$/,e=this.search.match(t);return this.isNoUser||!e?[this.search,this.search]:[e[1].trim(),e[2]]}},beforeMount(){!this.isNoUser&&!this.subname&&this.fetchUserStatus(this.user)}};var Fi=function(){var t=this,e=t._self._c;return e("span",t._g({staticClass:"option",class:{"option--compact":t.avatarSizee in t?zi(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,K=(t,e)=>{for(var n in e||(e={}))Hi.call(e,n)&&_e(t,n,e[n]);if(Se)for(var n of Se(e))Wi.call(e,n)&&_e(t,n,e[n]);return t},lt=(t,e)=>$i(t,Ri(e));ht(yn,vn);const Xi={name:"NcSelect",components:{ChevronDown:Ss,NcEllipsisedOption:Fs,NcListItemIcon:qi,NcLoadingIcon:Te,VueSelect:X.VueSelect},model:{prop:"modelValue",event:"update:modelValue"},props:lt(K(K({},X.VueSelect.props),X.VueSelect.mixins.reduce((t,e)=>K(K({},t),e.props),{})),{ariaLabelClearSelected:{type:String,default:B("Clear selected")},ariaLabelCombobox:{type:String,default:null},ariaLabelListbox:{type:String,default:B("Options")},ariaLabelDeselectOption:{type:Function,default:t=>B("Deselect {option}",{option:t})},appendToBody:{type:Boolean,default:!0},calculatePosition:{type:Function,default:null},closeOnSelect:{type:Boolean,default:!0},keepOpen:{type:Boolean,default:!1},components:{type:Object,default:()=>({Deselect:{render:t=>t(bn,{props:{size:20,fillColor:"var(--vs-controls-color)"},style:{cursor:"pointer"}})}})},limit:{type:Number,default:null},disabled:{type:Boolean,default:!1},dropdownShouldOpen:{type:Function,default:({noDrop:t,open:e})=>t?!1:e},filterBy:{type:Function,default:null},inputClass:{type:[String,Object],default:null},inputId:{type:String,default:()=>"select-input-".concat(Kt())},inputLabel:{type:String,default:null},labelOutside:{type:Boolean,default:!1},keyboardFocusBorder:{type:Boolean,default:!0},label:{type:String,default:null},loading:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},noWrap:{type:Boolean,default:!1},options:{type:Array,default:()=>[]},placeholder:{type:String,default:""},mapKeydown:{type:Function,default(t,e){return lt(K({},t),{27:n=>{e.open&&n.stopPropagation(),t[27](n)}})}},uid:{type:String,default:()=>Kt()},placement:{type:String,default:"bottom"},resetFocusOnOptionsChange:{type:Boolean,default:!0},userSelect:{type:Boolean,default:!1},value:{type:[String,Number,Object,Array],default:void 0},modelValue:{type:[String,Number,Object,Array],default:null},required:{type:Boolean,default:!1}," ":{}}),emits:[" ","input","update:modelValue","update:model-value"],setup(){const t=Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--default-clickable-area")),e=Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--default-grid-baseline")),n=t-2*e,i=mn("value","input");return{avatarSize:n,model:i}},data(){return{search:""}},computed:{inputRequired(){return this.required?this.model===null||Array.isArray(this.model)&&this.model.length===0:null},localCalculatePosition(){return this.calculatePosition!==null?this.calculatePosition:(t,e,{width:n})=>{t.style.width=n;const i={name:"addClass",fn(){return t.classList.add("vs__dropdown-menu--floating"),{}}},r={name:"togglePlacementClass",fn({placement:h}){return e.$el.classList.toggle("select--drop-up",h==="top"),t.classList.toggle("vs__dropdown-menu--floating-placement-top",h==="top"),{}}},u=()=>{gs(e.$refs.toggle,t,{placement:this.placement,middleware:[hs(-1),i,r,ds(),ps({limiter:fs()})]}).then(({x:h,y:o})=>{Object.assign(t.style,{left:"".concat(h,"px"),top:"".concat(o,"px"),width:"".concat(e.$refs.toggle.getBoundingClientRect().width,"px")})})};return us(e.$refs.toggle,t,u)}},localFilterBy(){const t=/[^<]*<([^>]+)/;return this.filterBy!==null?this.filterBy:this.userSelect?(e,n,i)=>{var r,u,h;const o=i.match(t);return o&&((h=(u=(r=e.subname)==null?void 0:r.toLocaleLowerCase)==null?void 0:u.call(r))==null?void 0:h.indexOf(o[1].toLocaleLowerCase()))>-1||"".concat(n," ").concat(e.subname).toLocaleLowerCase().indexOf(i.toLocaleLowerCase())>-1}:X.VueSelect.props.filterBy.default},localLabel(){return this.label!==null?this.label:this.userSelect?"displayName":X.VueSelect.props.label.default},propsToForward(){const t=[...Object.keys(X.VueSelect.props),...X.VueSelect.mixins.flatMap(n=>{var i;return Object.keys((i=n.props)!=null?i:{})})],e=Object.fromEntries(Object.entries(this.$props).filter(([n])=>t.includes(n)));return lt(K({},e),{value:this.model,calculatePosition:this.localCalculatePosition,closeOnSelect:this.closeOnSelect&&!this.keepOpen,filterBy:this.localFilterBy,label:this.localLabel})},listenersToForward(){return lt(K({},this.$listeners),{input:t=>{this.model=t}})}},mounted(){!this.labelOutside&&!this.inputLabel&&!this.ariaLabelCombobox&&Bt.util.warn("[NcSelect] An `inputLabel` or `ariaLabelCombobox` should be set. If an external label is used, `labelOutside` should be set to `true`."),this.inputLabel&&this.ariaLabelCombobox&&Bt.util.warn("[NcSelect] Only one of `inputLabel` or `ariaLabelCombobox` should to be set.")},methods:{t:B}};var Ki=function(){var t=this,e=t._self._c;return e("VueSelect",t._g(t._b({staticClass:"select",class:{"select--no-wrap":t.noWrap,"user-select":t.userSelect},on:{search:n=>t.search=n},scopedSlots:t._u([!t.labelOutside&&t.inputLabel?{key:"header",fn:function(){return[e("label",{staticClass:"select__label",attrs:{for:t.inputId}},[t._v(" "+t._s(t.inputLabel)+" ")])]},proxy:!0}:null,{key:"search",fn:function({attributes:n,events:i}){return[e("input",t._g(t._b({staticClass:"vs__search",class:t.inputClass,attrs:{required:t.inputRequired,dir:"auto"}},"input",n,!1),i))]}},{key:"open-indicator",fn:function({attributes:n}){return[e("ChevronDown",t._b({style:{cursor:t.disabled?null:"pointer"},attrs:{"fill-color":"var(--vs-controls-color)",size:26}},"ChevronDown",n,!1))]}},{key:"option",fn:function(n){return[t._t("option",function(){return[t.userSelect?e("NcListItemIcon",t._b({attrs:{"avatar-size":32,name:n[t.localLabel],search:t.search}},"NcListItemIcon",n,!1)):e("NcEllipsisedOption",{attrs:{name:String(n[t.localLabel]),search:t.search}})]},null,n)]}},{key:"selected-option",fn:function(n){return[t._t("selected-option",function(){return[t.userSelect?e("NcListItemIcon",t._b({attrs:{"avatar-size":t.avatarSize,name:n[t.localLabel],"no-margin":"",search:t.search}},"NcListItemIcon",n,!1)):e("NcEllipsisedOption",{attrs:{name:String(n[t.localLabel]),search:t.search}})]},{vBind:n})]}},{key:"spinner",fn:function(n){return[n.loading?e("NcLoadingIcon"):t._e()]}},{key:"no-options",fn:function(){return[t._v(" "+t._s(t.t("No results"))+" ")]},proxy:!0},t._l(t.$scopedSlots,function(n,i){return{key:i,fn:function(r){return[t._t(i,null,null,r)]}}})],null,!0)},"VueSelect",t.propsToForward,!1),t.listenersToForward))},Gi=[],Zi=j(Xi,Ki,Gi,!1,null,null);const Qi=Zi.exports;export{Qi as default}; -//# sourceMappingURL=NcSelect--Dtr1_4N.chunk.mjs.map diff --git a/js/NcSelect--Dtr1_4N.chunk.mjs.map b/js/NcSelect--Dtr1_4N.chunk.mjs.map deleted file mode 100644 index 3896435e..00000000 --- a/js/NcSelect--Dtr1_4N.chunk.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NcSelect--Dtr1_4N.chunk.mjs","sources":["../node_modules/@nextcloud/capabilities/node_modules/@nextcloud/initial-state/dist/index.mjs","../node_modules/@nextcloud/capabilities/dist/index.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@nextcloud/vue-select/dist/vue-select.js","../node_modules/@nextcloud/vue/dist/chunks/ChevronDown-DFQfzh63.mjs","../node_modules/@nextcloud/vue/dist/chunks/index-JArK0Dbx.mjs","../node_modules/@nextcloud/vue/dist/Components/NcEllipsisedOption.mjs","../node_modules/@nextcloud/vue/dist/Composables/useIsFullscreen.mjs","../node_modules/striptags/src/striptags.js","../node_modules/@nextcloud/vue/dist/Functions/isDarkTheme.mjs","../node_modules/@nextcloud/vue/dist/chunks/constants-Bls5liKo.mjs","../node_modules/@nextcloud/vue/dist/Composables/useIsDarkTheme.mjs","../node_modules/@vueuse/components/node_modules/vue-demi/lib/index.mjs","../node_modules/@vueuse/components/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/autolink-D2pIbi92.mjs","../node_modules/@nextcloud/vue/dist/Functions/contactsMenu.mjs","../node_modules/crypt/crypt.js","../node_modules/charenc/charenc.js","../node_modules/is-buffer/index.js","../node_modules/md5/md5.js","../node_modules/@nextcloud/vue/dist/Functions/usernameToColor.mjs","../node_modules/@nextcloud/vue/dist/chunks/getAvatarUrl-C8Q41hfR.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcUserStatusIcon-BWxo_etm.mjs","../node_modules/@nextcloud/vue/dist/Components/NcActionLink.mjs","../node_modules/@nextcloud/vue/dist/Components/NcActionRouter.mjs","../node_modules/@nextcloud/vue/dist/Components/NcActionText.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAvatar-Cupl4prm.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcListItemIcon-PNp6Wael.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSelect-TjZw7TJ_.mjs"],"sourcesContent":["function loadState(app, key, fallback) {\n const elem = document.querySelector(`#initial-state-${app}-${key}`);\n if (elem === null) {\n if (fallback !== void 0) {\n return fallback;\n }\n throw new Error(`Could not find initial state ${key} of ${app}`);\n }\n try {\n return JSON.parse(atob(elem.value));\n } catch (e) {\n throw new Error(`Could not parse initial state ${key} of ${app}`);\n }\n}\nexport {\n loadState\n};\n","import { loadState as i } from \"@nextcloud/initial-state\";\nfunction e() {\n try {\n return i(\"core\", \"capabilities\");\n } catch {\n return console.debug(\"Could not find capabilities initial state fall back to _oc_capabilities\"), \"_oc_capabilities\" in window ? window._oc_capabilities : {};\n }\n}\nexport {\n e as getCapabilities\n};\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (_e) {\n return false;\n }\n });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the element as the offsetParent if it's non-static,\n // while Chrome and Safari return the element. The element must\n // be used to perform the correct calculations even if the element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle